La convención para los archivos de texto de Unix es que cada línea termina con una nueva línea y que las nuevas líneas son terminadores de línea, no separadores de línea.
Cuando Vim guarda un búfer como un archivo, termina cada línea con la secuencia de fin de línea para ese formato de archivo, que para Unix es una nueva línea. Ver
:help 'fileformat'
Si está utilizando herramientas de procesamiento de texto de Unix, es mejor ceñirse a esta convención. Sin embargo, si tiene alguna necesidad de no poner una nueva línea al final de la última línea de un archivo, puede hacerlo. Vim considera que dichos archivos son "binarios". Ver
:help 'binary'
:help edit-binary
Vim 8.0 ahora proporciona esto con el fixeol
opción. Específicamente si lo hace:
:set nofixeol
entonces Vim no lo hará agregue un carácter de nueva línea final al final de la línea final si el archivo aún no tenía uno.
Eso podría ir en un complemento de tipo de archivo, o posiblemente incluso en su .vimrc
.
(Esta es una mejora en :set binary
porque solo afecta al carácter de salto de línea final, mientras que binary
también cambia un montón de otros comportamientos, que probablemente no quieras a menos que estés editando un archivo binario).
Un archivo recién creado seguirá teniendo un carácter de salto de línea final de forma predeterminada. Puede cambiar eso (y cambiar un archivo que ya tiene una nueva línea final para que no la tenga) haciendo además:
:set noeol
Eso debe configurarse específicamente para cada archivo que desee cambiar:cargar un archivo en un búfer siempre establecerá eol
para que coincida con el estado actual del archivo.
Vim no está agregando nada que no hayas puesto tú mismo.
Un carácter de "nueva línea" es no una "nueva línea" y ambos ejemplos son perfectamente normales:
- en el primero, el archivo solo contiene una línea, por lo que obtiene un carácter de "nueva línea",
- en el segundo, el archivo contiene dos líneas, por lo que obtiene dos caracteres de "nueva línea".