Existe uma .vimrcconfiguraçã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 .vimrcconfiguraçã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
eusa?
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 982e 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 :autocmdsexemplos 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 .