¿Por qué no puedo cambiar la entrada estándar de Vim a algún archivo en el disco mediante la redirección?

¿Por qué no puedo cambiar la entrada estándar de Vim a algún archivo en el disco mediante la redirección?

Estaba leyendo el "El sistema de tiempo compartido UNIX Dennis M. Ritchie y Ken Thompson" paper y como ejemplo de redirección de entrada/salida estándar, da el ejemplo del editor ed:

El comando ed <scriptinterpreta el script como un archivo de comandos del editor; por lo tanto, " <script" significa "tomar información de script".

Sin embargo, si intento lo mismo usando vim, aparece un error que dice "Error al leer la entrada":

[m@localhost rough]$ vim t2 <t
Vim: Warning: Input is not from a terminal
Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.

¿Por que es esto entonces?

Respuesta1

edy exsoneditores de línea. Tienen el tipo de interfaz de usuario que puede ser manejada por líneas en un archivo de texto.

viy todos sus clones como VIM soneditores de pantalla completa. Tienen interfaces de usuario que no tratan la entrada y salida como líneas de archivos de texto. La entrada son caracteres individuales y secuencias de caracteres no agrupados en líneas. El resultado son personajes individuales y secuencias de escape y control para dibujar en un terminal de vídeo.

el modelo deE/S de usuarioya que los archivos de texto no se asignan a programas TUI interactivos de pantalla completa, y mucho menos a programas GUI.

El comportamiento que obtiene varía de un programa a otro. Algunos programas TUI de pantalla completa reconocerán cuando su entrada estándar no sea una terminal y abortarán, como nvilo hace. Otros, como VIM, advertirán pero tratarán el archivo de entrada no terminal como entrada de terminal, generando un comportamiento algo extraño para las personas que esperan que la entrada sea tratada como comandos de script. Otros, como lesspor ejemplo, abren explícitamente un dispositivo terminal para la interfaz de usuario y no utilizan E/S estándar para (la parte de entrada) del mismo. Sin embargo, otros, como la mayoría de los shells (que, tenga en cuenta, tienen interfaces de usuario interactivas que son más que el modo de línea), pasan a un modo no interactivo.

Un artículo escrito sobre Unix en 1974 no será una buena guía para la diferencia entre interfaces de usuario en modo de línea e interfaces de usuario de pantalla completa. Posiblemente el primer editor Unix para terminales de vídeo, el de George Coulouris em, estuviera un año en el futuro. También en el futuro estaban termcap, shells con (su propia) edición de línea de comando y valores predeterminados de disciplina de línea que usaban caracteres especiales no gráficos.

información relacionada