205 votos

¿Cómo se puede eliminar automáticamente los espacios en blanco en vim

Me estoy haciendo 'espacios en blanco' errores tratando de cometer algunos archivos en git.

Quiero eliminar estos arrastran los espacios en blanco de forma automática justo antes de guardar archivos python.

¿Se puede configurar vim para hacer esto? Si es así, ¿cómo?

214voto

Paul D. Eden Puntos 4842

Encontré la respuesta aquí .

Agregar lo siguiente en mi archivo .vimrc hizo el truco.

 autocmd BufWritePre *.py :%s/\s\+$//e
 

175voto

stepancheg Puntos 2229

Recopilación de las anteriores más el ahorro de posición del cursor:

 fun! <SID>StripTrailingWhitespaces()
    let l = line(".")
    let c = col(".")
    %s/\s\+$//e
    call cursor(l, c)
endfun

autocmd FileType c,cpp,java,php,ruby,python autocmd BufWritePre <buffer> :call <SID>StripTrailingWhitespaces()
 

Si desea aplicar esta en guardar a cualquier archivo, omiten el primer autocmd y utilizar un comodín * :

 autocmd BufWritePre * :call <SID>StripTrailingWhitespaces()
 

70voto

mat Puntos 5365

Yo también suelen tener una :

match Todo /\s\+$/

en mi .vimrc archivo, de modo que al final de la línea los espacios en blanco son hilighted.

Todo ser una sintaxis hilighting grupo-nombre que se usa para hilighting palabras clave como TODO, FIXME o XXX. Tiene un molesto feo color amarillento color de fondo, y me parece que es la mejor hilight cosas que usted no quiere en su código :-)

53voto

Michael Durrant Puntos 30342

Yo culminante existente espacios en blanco y también tira espacios en blanco finales.

Cómo configuro mi editor (vim) para mostrar el espacio en blanco al final, por ejemplo,

introducir descripción de la imagen aquí

con este en la parte inferior de mi .vimrc:

 highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()
 

y yo 'auto-tira "que a partir de archivos al guardar ellos, en mi caso * .rb para archivos de rubí, de nuevo en mi ~ / .vimrc

 function! TrimWhiteSpace()
    %s/\s\+$//e
endfunction
autocmd BufWritePre     *.rb :call TrimWhiteSpace()
 

13voto

syvex Puntos 2244

Aquí está una manera de filtrar por más de un tipo de archivo.

 autocmd FileType c,cpp,python,ruby,java autocmd BufWritePre <buffer> :%s/\s\+$//e
 

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X