Entonces trabajo en una tienda PHP, y todos usamos editores diferentes, y todos tenemos que trabajar en Windows. Uso vim, y todos en la tienda se quejan de que cada vez que edito un archivo hay una nueva línea en la parte inferior. Busqué y descubrí que este es un comportamiento documentado de vi & vim ... pero me preguntaba si había alguna forma de desactivar esta función. (Sería mejor si pudiera deshabilitarlo para extensiones de archivo específicas).
Si alguien sabe sobre esto, ¡sería genial!
?>
etiqueta de cierre, solo por esta razón.Respuestas:
Y para
vim
7.4+ puedes usar (preferiblemente en tu .vimrc) (¡gracias a 罗泽轩 por esa última noticia!):Ahora con respecto a versiones anteriores de
vim
.Incluso si el archivo ya se guardó con nuevas líneas al final:
vim -b file
y una vez en vim:hecho.
alternativamente, puede abrir archivos en vim con
:e ++bin file
Otra alternativa más:
fuente
set binary
yset noeol
en su .vimrcbinary
anulacionesexpandtab
, lo que te llevará a obtener pestañas literales en tu fuente.set nofixendofline
para resolver el problema en Vim 7.4+Agregue el siguiente comando a su .vimrc para desactivar la opción de fin de línea:
Sin embargo , PHP ignorará el último final de línea, no debería ser un problema. Estoy casi seguro de que en su caso hay algo más que está agregando el último carácter de nueva línea, o posiblemente hay una confusión con los tipos de final de línea de Windows / Unix (
\n
o\r\n
, etc.).Actualizar:
Una solución alternativa podría ser simplemente agregar esta línea a su .vimrc:
fuente
Hay otra forma de abordar esto si está utilizando Git para el control de fuente. Inspirado por una respuesta aquí , escribí mi propio filtro para usar en un archivo de atributos .
Para instalar este filtro, guárdelo como
noeol_filter
en algún lugar de su$PATH
, hágalo ejecutable y ejecute los siguientes comandos:Para comenzar a usar el filtro solo para usted, ponga la siguiente línea en su
$GIT_DIR/info/attributes
:Esto asegurará que no confirmes ninguna nueva línea en eof en un
.php
archivo, sin importar lo que haga Vim.Y ahora, el script en sí:
fuente
No he probado esta opción, pero la siguiente información se proporciona en el sistema de ayuda de vim (es decir, help eol):
También puede interesarle la respuesta a una pregunta anterior: " ¿Por qué los archivos deben terminar con una nueva línea? ".
fuente
He agregado un consejo en la wiki de Vim para un problema similar (aunque diferente):
http://vim.wikia.com/wiki/Do_not_auto-add_a_newline_at_EOF
fuente
fixeol
opción que se puede deshabilitar para preservar automáticamente cualquier EOL faltante al final del archivo. Este script se vuelve innecesario para Vim 7.4.785 y posterior ". (Fuente: la misma página wiki.) Gracias, no estaba al tanto de esa nueva opción.noeol
ynofixeol
lograr el resultado deseable.OK, estar en Windows complica las cosas;)
Como la opción 'binario' restablece la opción 'formato de archivo' (y escribir con el conjunto 'binario' siempre escribe con terminaciones de línea unix), saquemos el gran martillo y hagámoslo externamente.
¿Qué hay de definir un autocomando (: autocomando de ayuda) para el evento BufWritePost? Este comando automático se ejecuta después de cada vez que escribe un búfer completo. En este comando automático, llame a una pequeña herramienta externa (php, perl o cualquier script) que elimine la última línea nueva del archivo recién escrito.
Entonces esto se vería así y entraría en su archivo .vimrc:
Asegúrese de leer toda la documentación de vim sobre los comandos automáticos si es la primera vez que trata con los comandos automáticos. Hay algunas advertencias, por ejemplo, se recomienda eliminar todos los autocmds en su .vimrc en caso de que su .vimrc se obtenga varias veces.
fuente
silent
. Por ejsilent !your-script <afile>
.He implementado las sugerencias de Blixtor con el posprocesamiento de Perl y Python, ya sea que se ejecute dentro de Vim (si está compilado con dicho soporte de lenguaje) o mediante un script Perl externo. Está disponible como el complemento PreserveNoEOL en vim.org.
fuente
let g:PreserveNoEOL = 1
en mi.vimrc
archivo. ¡Tuve que aprender vimscript para descubrirlo a partir de la descripción del complemento! : D:help PreserveNoEOL-usage
te lo habría dicho. RTFM :-)INSTALLATION
yCONFIGURATION
. Ni siquiera noté laUSAGE
sección en la descripción, porque está por encima de la instalación :)Tal vez podrías ver por qué se están quejando. Si un archivo php tiene una nueva línea después del final?>, Php lo mostrará como parte de la página. Esto no es un problema a menos que intente enviar encabezados después de incluir el archivo.
Sin embargo, el?> Al final de un archivo php es opcional. ¿Sin finalización?>, No hay problema con una nueva línea al final del archivo.
fuente
Agrego .vimrc
y ayuda, pruébalo
fuente
Creo que he encontrado una mejor solución que la respuesta aceptada. Las soluciones alternativas no me funcionaban y no quería tener que trabajar en modo binario todo el tiempo. Afortunadamente, esto parece hacer el trabajo y aún no he encontrado ningún efecto secundario desagradable: preservar el final de línea que falta al final de los archivos de texto . Acabo de agregar todo a mi ~ / .vimrc.
fuente
¿Le sería posible utilizar un comando especial para guardar estos archivos?
Si lo hace: set binary,: w and: set nobinary, el archivo se escribirá sin nueva línea si no había ninguno para empezar.
Esta secuencia de comandos podría ponerse en un comando definido por el usuario o una asignación, por supuesto.
fuente
A partir de
vim
v7.4 puedes usarHay información sobre ese cambio aquí: http://ftp.vim.org/vim/patches/7.4/7.4.785 .
fuente
Encontré que este complemento vimscript es útil para esta situación.
O lea más en github
fuente