Isso funciona (no arquivo .vimrc) para todos os arquivos:
autocmd BufWritePre * :%s/\s\+$//e
Isso funciona (no arquivo .vimrc) apenas para arquivos ruby (.rb):
autocmd BufWritePre *.rb :%s/\s\+$//e
Existe uma configuração de .vimrc
para remover automaticamente espaços em branco ao salvar um arquivo?
Idealmente (por segurança), gostaria de ter apenas essa funcionalidade para determinados arquivos, por exemplo, *.rb
Para manter a posição do cursor, use algo como:
function! <SID>StripTrailingWhitespaces()
let l = line(".")
let c = col(".")
%s/\s\+$//e
call cursor(l, c)
endfun
O cursor else terminaria no início da última linha de substituição após salvar.
Exemplo : Você tem um espaço no final da linha 122
, você está na linha 982
e
Coloque o código%. Não restaurar a posição, resultaria no final do cursor no início da linha :w
, matando o fluxo de trabalho.
Configure a chamada para funcionar usando 122
, alguns exemplos:
" Using file extension
autocmd BufWritePre *.h,*.c,*.java :call <SID>StripTrailingWhitespaces()
" Often files are not necessarily identified by extension, if so use e.g.:
autocmd BufWritePre * if &ft =~ 'sh\|perl\|python' | :call <SID>StripTrailingWhitespaces() | endif
" Or if you want it to be called when file-type i set
autocmd FileType sh,perl,python :call <SID>StripTrailingWhitespaces()
" etc.
Também é possível usar, mas não é necessário, neste caso, getpos () por:
let save_cursor = getpos(".")
" Some replace command
call setpos('.', save_cursor)
" To list values to variables use:
let [bufnum, lnum, col, off] = getpos(".")
Meu plug-in DeleteTrailingWhitespace faz isso e, em contraste com os vários simples :autocmds
floating ao redor, também lida com casos especiais, pode consultar o usuário ou anular gravações com espaços em branco à direita.
A página do plugin contém links para alternativas; há também uma grande discussão sobre o Wiki do Vim Tips .
Tags vim vi vimrc whitespace editors