Información básica
Vim no muestra la última línea nueva en el búfer, pero en realidad vim siempre coloca EOL al final del archivo cuando lo escribe, porque es estándar para archivos de texto en sistemas Unix. Puede encontrar más información sobre esto aquí . En resumen, no tiene que preocuparse por la ausencia de nuevas líneas al final del archivo en vim.
Experimento 1
Puede hacer este pequeño experimento para verificar este comportamiento. En la terminal ejecute:
$ vim test_test
Ingrese el carácter 1y guarde el archivo :wq.
Solo tienes un personaje en el archivo, ¿verdad? En realidad no :) Ahora tienes en tu archivo 1y LFpersonajes. Vamos a verlo, con la utilidad hexdump:
$ hexdump test_test
0000000 31 0a
0000002
31es el código ASCII para el carácter 1y 0aes el código ASCII para el LFcarácter que no se imprime , que para UNIX, como ya conoce el código para el final de línea.
Experimento 2
Pero, ¿qué pasa si abrimos un archivo que no tiene eolsímbolo al final del archivo? Vamos a verlo también. Creemos un archivo sin eol al final, por ejemplo así:
$ echo -n "1" > test_without_eol
Entonces, nuevamente miremos dentro con hexdump:
$ hexdump test_without_eol
000000 31
0000001
Entonces no hay ningún eolpersonaje aquí. Abramos este archivo en vim:
$ vim test_without_eol
En la parte inferior del editor, verá:
"test_without_eol" [noeol] 1L, 1C
Y si guarda este archivo, el eolcarácter se pondrá automáticamente.
¿Qué podemos hacer al respecto?
Si realmente necesita ver el final del archivo. Intenta usar este comando:
:set listchars=eol:$
mostrará todos los eolcaracteres como $signo.
:set listchars=eol:$Vim solo omite la EOL si el archivo se abre como
'binary'y la'endofline'opción se restablece (cuando el archivo binario no tenía una EOL al abrir, o restablece explícitamente la opción). En otras palabras, Vim solo honra una EOL faltante para los archivos binarios. Para archivos de texto, siempre escribe con una EOL (agregada). (Es por eso que necesita soluciones como mi complemento PreserveNoEOL para mantener archivos de texto sin EOL). Puede encontrar todos los detalles en:help 'endofline'.Por lo tanto, solo necesita asegurarse de abrir el archivo como no binario para que Vim escriba automáticamente una EOL.
fuente
Como Alexander mencionó, Vim no muestra EOL en EOF, por eso es tan confuso (especialmente con una nueva línea vacía / en blanco, que es otra cosa), por lo tanto, en realidad escribe todo el tiempo en guardar archivos.
Aquí hay una prueba simple de cómo probar si eso funciona:
Observe cómo se comporta el indicador de comandos de shell cuando no hay EOL (se mezcla con la siguiente línea). Al volver a guardar el archivo con Vim, lo agrega.
Usando
wcpodemos contar líneas, palabras y caracteres antes de guardar y después, para que podamos ver que realmente cambia.¿Por qué esto es tan importante? Para mantener nuestros archivos compatibles con POSIX .
fuente