Pregunta Vim sin fin de línea en la última línea o eof


Estoy tratando de configurar vim para omitir la adición de eol en la última línea o eof, lo he intentado

:set binary
:set noeol
:w

que no es perfecto causa el tipo de archivo de anulación binario para su uso posterior.

Cualquier otra opción para configurar esto, no necesito nueva línea en la última línea.


24
2017-11-09 12:13


origen


Respuestas:


Quería agregar una respuesta que creo que puede ser tan útil. La respuesta seleccionada siempre eliminar el EOL en los archivos, incluso si tenían uno para empezar. Este puede ser el comportamiento que desea, también puede no serlo. En mi opinión, quiero preservar la EOL como originalmente abrí el archivo.

Lo que sugiero es una ligera modificación. Poner set binary en la parte superior de tu .vimrc archivo. De esta forma, cualquier archivo se abrirá en modo binario. Si no tienen EOL, vim detectará esto y lo dejará NOEOL. Si tienen una EOL, entonces reconocerán que tiene una EOL y la dejarán en paz.

Si desea nuevo archivos para que también no tengan EOL, entonces debes configurar,

au BufNewFile * set noeol

Los comandos para el muchacho serían si siempre quiero NOEOL nunca. Lo único que debe tenerse en cuenta es que si tiene un archivo con espacios en la parte inferior, perderá espacios al final. Esto es porque sucede lo siguiente,

  1. VIM lee el archivo y ve una nueva línea al final y piensa, OK, este es un archivo con una línea nueva (independientemente de si está en modo binario o no).
  2. Cuando luego escribe un archivo, ejecuta el autocmd,
    1. establecer el modo binario
    2. establecer noeol (esto borra el EOL que VIM pensamiento estaba terminando el archivo y lo elimina.
    3. el archivo se guarda
  3. Ahora tiene un archivo que tiene una EOL menos en él.

Este proceso se repetirá hasta que los EOL hayan desaparecido y el archivo termine en un solo carácter. Con mi configuración, lo que sucede es que el archivo se abre y si VIM ve en menos una EOL luego la mantiene internamente. Si guarda ese archivo, no importa lo que esté allí (puede verificarlo escribiendo set eol?. En el caso de que desee deshacerse de esa EOL almacenada internamente, solo diga set noeol y luego guardar y AUGE, la última EOL se elimina.

WHOOO, estoy sin aliento escribiendo esto.


15
2018-01-08 02:05



Esto es incluso mejor que encontré en alguna parte:

au BufWritePre * :set binary | set noeol
au BufWritePost * :set nobinary | set eol

7
2017-11-11 09:06



De la documentación de vim:

'binary' 'bin'      boolean (default off)
            local to buffer
            {not in Vi}
    This option should be set **before** editing a binary file.  You can also

Por lo tanto, debe usar vim -b o :e ++bin file, o recarga usando :e! ++bin.


4
2017-11-09 12:17



He venido con esto:

" php remove eol from end of file
autocmd FileType php setlocal noeol binary fileformats="mac,unix,dos"

Gracias a todos.

Aclamaciones.


1
2017-11-09 15:31