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 1
y guarde el archivo :wq.
Solo tienes un personaje en el archivo, ¿verdad? En realidad no :) Ahora tienes en tu archivo 1
y LF
personajes. Vamos a verlo, con la utilidad hexdump:
$ hexdump test_test
0000000 31 0a
0000002
31
es el código ASCII para el carácter 1
y 0a
es el código ASCII para el LF
cará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 eol
sí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 eol
personaje 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 eol
cará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 eol
caracteres 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
wc
podemos 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