write sheet rtor delete commands cheats cheat vim newline

sheet - vim rtor



¿Por qué necesito vim en modo binario para que funcione ''noeol''? (4)

tener una preferencia simple en .vimrc para NO agregar nuevas líneas en cada archivo que edito

Puedes usar mi plugin PreserveNoEOL para eso. Con esta configuración simple, has terminado; alternativamente, también puedes influenciar esto por buffer:

:let g:PreserveNoEOL = 1

Esta pregunta es un seguimiento del trabajo que utilizo para "guardar archivos en vim sin tener que agregar la nueva línea al final del archivo" molesto ".

Básicamente no puedo usar set noeol en mi .vimrc porque no hace nada!

Sin embargo, hace lo que se supone que debe hacer si edito el archivo en modo binario. ( vim -b file lugar de vim file )

¿Porqué es eso?

De todos modos, ¿tengo una preferencia simple en .vimrc para NO agregar nuevas líneas en cada archivo que edito?

Además, ¿qué tipo de problemas encontraré si comienzo a editar cada archivo en modo binario? Hasta ahora no he visto ninguna diferencia.


Lo que Vim "agrega" al final de la última línea en su archivo es el carácter "nueva línea", que no debe confundirse con una "nueva línea".

El carácter "nueva línea" o más exactamente el carácter "fin de línea" ( <EOL> ) significa que "lo que venga después de este punto debe considerarse en otra línea". Con esta interpretación, <EOL> es un terminador de línea, la última línea del archivo es efectivamente la última con un <EOL> .

El problema es que la mayoría de los editores e IDE tienen una interpretación diferente ( <EOL> es un separador de líneas) y, lógicamente, no agregan un <EOL> al final de la última línea de un archivo nuevo y, cuando se encuentran con un <EOL> , agrega una "nueva línea" superflua después de la última línea real.

En resumen, Vim no agrega una "nueva línea": otros editores interpretan (erróneamente) su "nueva línea" como una "nueva línea".

Pero puede :set binary noeol ese problema haciendo lo siguiente: antes de escribir su archivo, realice :set binary noeol si desea que permanezca " <EOL> -free".

Sin embargo :h ''binary'' tiene mucho que decir sobre los peligros de :set binary así que diría que encenderlo todo el tiempo suena como una mala idea.

Para ilustrar los diferentes comportamientos, esto es lo que sucede cuando intenta concatenar dos archivos con <EOL> :

$ cat file1 $ cat file2 $ cat file1 file2 lorem ipsum Le tramway jaune lorem ipsum dolor sit avance lentement dolor sit amet dans le amet Le tramway jaune avance lentement dans le

y esto es lo que sucede cuando intentas concatenar dos archivos sin <EOL> :

$ cat file1 $ cat file2 $ cat file1 file2 lorem ipsum Le tramway jaune lorem ipsum dolor sit avance lentement dolor sit amet dans le ametLe tramway jaune avance lentement dans le

El primer comportamiento es de alguna manera el comportamiento esperado y la razón por la que Vim y muchos (si no la mayoría) de los programas UNIX-y predeterminan la interpretación del terminador y agregan un carácter <EOL> al final de la última línea.

La siguiente imagen muestra un archivo simple con <EOL> creado con nano (sería lo mismo con Vim) y se abrió en Eclipse, TextMate, Sublime Text, Vim, XCode y TextEdit.

(editar) No hay línea 4 en este archivo y el único editor del grupo que muestra el archivo correctamente es Vim. El único propósito de una columna de número de línea es proporcionar información sobre el búfer. Mostrar 4 líneas donde solo hay 3 es un gran error. (terminado)

Esta imagen muestra otro archivo simple sin <EOL> creado con Sublime Text y abierto en los mismos editores / IDEs.


Según el vimdoc noeol no hace nada a menos que el modo binary esté noeol .

*''endofline''* *''eol''* *''noendofline''* *''noeol''* ''endofline'' ''eol'' boolean (default on) local to buffer {not in Vi} When writing a file and this option is off and the ''binary'' option is on, no <EOL> will be written for the last line in the file. This option is automatically set when starting to edit a new file, unless the file does not have an <EOL> for the last line in the file, in which case it is reset. Normally you don''t have to set or reset this voption. When ''binary'' is off the value is not used when writing the file. When ''binary'' is on it is used to remember the presence of a <EOL> for the last line in the file, so that when you write the file the situation from the original file can be kept. But you can change it if you want to.


desde la versión 7.4.785 vim tiene la configuración fixendofline . Puede evitar el binary con algunos efectos secundarios y simplemente establecer

set noendofline set nofixendofline