Recibo errores de 'espacio en blanco final' al intentar confirmar algunos archivos en git.
Quiero eliminar estos caracteres de espacio en blanco al final automáticamente antes de guardar los archivos de Python.
¿Puedes configurar vim para hacer esto? ¿Si es así, cómo?
vim
automation
whitespace
removing-whitespace
Paul D. Eden
fuente
fuente
Respuestas:
Encontré la respuesta aquí .
Agregar lo siguiente a mi archivo .vimrc hizo el truco.
fuente
e
al final significa que, si no encontramos el patrón, vi no considera que el comando sustituto haya falladoCompilación de la posición del cursor anterior más guardar:
Si desea aplicar esto al guardar en cualquier archivo, omita el segundo
autocmd
y use un comodín*
:fuente
autocmd FileType c,cpp,java,php,ruby,python
parte para que se aplique a todos los archivos.<buffer>
con*
si usted quiere que funcione en todos los archivoskeepp
, no alterará tu historial de búsqueda, es decirkeepp %s/\s\+$//e
También suelo tener un:
en mi
.vimrc
archivo, de modo que se resaltan los espacios en blanco de fin de línea.Todo es un nombre de grupo de resaltado de sintaxis que se utiliza para resaltar palabras clave como
TODO
,FIXME
oXXX
. Tiene un color de fondo amarillento molesto y feo, y creo que es lo mejor para ocultar cosas que no quieres en tu código :-)fuente
:hi Todo
. Así que leí detenidamente:hi <Tab>
y:help hi
. Lo consideréCursor
yError
, pero creo que lo intentarématch VisualNOS /\s\+$/
. Podría combinar esto con algunas de lasautocmd
respuestas de otras respuestas aquí.Destaco los espacios en blanco finales existentes y también elimino los espacios en blanco finales.
Configuro mi editor (vim) para mostrar espacios en blanco al final, por ejemplo
con esto en la parte inferior de mi .vimrc:
y lo 'elimino automáticamente' de los archivos al guardarlos, en mi caso * .rb para archivos ruby, nuevamente en mi ~ / .vimrc
fuente
Aquí hay una manera de filtrar por más de un FileType.
fuente
Copiado y pegado de http://blog.kamil.dworakowski.name/2009/09/unobtrusive-highlighting-of-trailing.html (el enlace ya no funciona, pero el bit que necesita está debajo)
"Esto tiene la ventaja de no resaltar cada espacio que escribe al final de la línea, solo cuando abre un archivo o sale del modo de inserción. Muy ordenado".
fuente
Vi esta solución en un comentario en VIM Wikia - Eliminar espacios no deseados
Realmente me gustó. Agrega un
.
en los espacios en blanco no deseados.Pon esto en tu
.vimrc
fuente
Así es como lo estoy haciendo. No recuerdo dónde lo robé de tbh.
fuente
%s
la bandera global (g) es tan inútil como un espacio en EOL :-)Una solución que simplemente elimina los espacios en blanco finales del archivo no es aceptable en todas las circunstancias. Funcionará en un proyecto que ha tenido esta política desde el principio, por lo que no hay espacios en blanco que no haya agregado en su próxima confirmación.
Suponga que simplemente no desea agregar nuevas instancias de espacios en blanco al final, sin afectar el espacio en blanco existente en las líneas que no editó, para mantener su confirmación libre de cambios que son irrelevantes para su trabajo.
En ese caso, con git, puede usar un script como este:
Es decir, ocultamos los cambios y luego filtramos todas las
+
líneas en el diff para eliminar su espacio en blanco al volver a aplicar el cambio al directorio de trabajo. Si esta tubería de comando tiene éxito, dejamos caer el alijo.fuente
Los otros enfoques aquí de alguna manera no funcionaron para mí en MacVim cuando se usaban en el
.vimrc
archivo. Así que aquí hay uno que hace y resalta los espacios finales:fuente
set listchars=trail:·
diciendo:E474: Invalid argument: listchars=trail:·
. ¿Puedes validar tu ejemplo?autocmd BufWritePre * :%s/\s\+$//<CR>:let @/=''<CR>
fuente
Para las personas que desean ejecutarlo para tipos de archivo específicos (los FileTypes no siempre son confiables):
O con vim7:
fuente
Si recorta los espacios en blanco, solo debe hacerlo en archivos que ya están limpios. "Cuando en Roma...". Esta es una buena etiqueta cuando se trabaja en bases de código donde los cambios espurios no son bienvenidos.
Esta función detecta espacios en blanco al final y activa el recorte solo si ya estaba limpio.
El crédito para esta idea va a la gema de un comentario aquí: https://github.com/atom/whitespace/issues/10 (el flujo de comentarios de boleto de error más largo de la historia)
fuente
let _s=@/
y restaurarlo al final `let @ / = _ s`. En este caso, estamos utilizando el registro de agujeros negros