No agregue una nueva línea al final de un archivo

11

Vim siempre agrega una nueva línea al final de mis archivos al guardar, y está causando errores en mis scripts PHP.

¿Cómo puedo hacer que vim no agregue esta nueva línea al guardar?

Dan
fuente
77
"está causando errores en mis scripts PHP" -> ¿Esto es extraño? PHP debería funcionar bien con una nueva línea final. De hecho, esto es bastante estándar. ¿Quizás tenga una línea en blanco después de la ?>cual PHP envía al navegador (causando el error "encabezados ya enviados")? No necesita un seguimiento ?>, y generalmente se recomienda dejarlo fuera para evitar exactamente este problema.
Martin Tournoij
Supongo que eso es engañoso. Nuestros scripts interpretan cualquier salida como un error.
Dan
1
No. Vim no está agregando una nueva línea.
romainl

Respuestas:

11

Esta no es una línea vacía completa, solo una nueva línea final al final de la última línea. Las herramientas de Unix (como la herencia de Vim) insisten en agregar eso, mientras que el sistema operativo Windows no es tan estricto. Puede leer más sobre eso en ¿Por qué los archivos deben terminar con una nueva línea?

Desafortunadamente, es bastante complejo evitar que Vim escriba la nueva línea final. Mi complemento PreserveNoEOL puede hacer esto. Para una discusión de enfoques, vea también VIM Deshabilitar nueva línea automática al final del archivo .

Ingo Karkat
fuente
Solo señalando a los futuros lectores que si bien esta respuesta fue excelente en ese momento, en las versiones más recientes de Vim hay una solución mucho más simple en una respuesta publicada más tarde .
Rico
11

En las nuevas versiones de Vim finalmente hay una opción para esto

Vim 7.4.785 agrega la opción 'fixeol' que se puede deshabilitar para preservar automáticamente cualquier EOL faltante al final del archivo.

(ver página wiki: http://vim.wikia.com/wiki/Do_not_auto-add_a_newline_at_EOF )

En su ~/.vimrcagregar esta línea:

set nofixeol

Relanzar vim, ahora no debería agregar la nueva línea al final del archivo.

(funciona solo desde la versión vim 7.4.785)

DarthVanger
fuente
0

¿Has intentado abrir el archivo en modo binario? Tratar vim -b file_name. No debe agregar la nueva línea al final del archivo.

Ali
fuente
Intenté hacer esto y luego usar xxdpara verificar, pero aún agrega un salto de línea ( 0a) incluso en modo binario.
James