Existe uma .vimrc
configuração para remover automaticamente os espaços em branco finais ao salvar um arquivo?
Idealmente (por segurança), eu gostaria de ter apenas essa funcionalidade para determinados arquivos, por exemplo, *.rb
Existe uma .vimrc
configuração para remover automaticamente os espaços em branco finais ao salvar um arquivo?
Idealmente (por segurança), eu gostaria de ter apenas essa funcionalidade para determinados arquivos, por exemplo, *.rb
Respostas:
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
e
usa?
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
caso contrário, o cursor terminaria no início da linha da última substituição após o salvamento.
Exemplo : você tem um espaço no final da linha 122
, está on-line 982
e entra :w
. Se não restaurar a posição, o cursor acabaria no início da linha 122
, matando o fluxo de trabalho.
Configure a chamada para funcionar usando autocmd
, 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.
Pode-se também usar, mas não necessário neste caso, getpos () :
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, ao contrário dos vários :autocmds
exemplos simples , também lida com casos especiais, pode consultar o usuário ou abortar gravações com espaço em branco à direita.
A página do plugin contém links para alternativas; também há uma grande discussão no Wiki de dicas do Vim .