Como remover automaticamente os espaços à esquerda no Vi e no Vim?

20

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

    
por Michael Durrant 11.05.2013 / 14:50

3 respostas

23

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
    
por 11.05.2013 / 14:54
18

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(".")
    
por 11.05.2013 / 16:25
2

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 .

    
por 14.05.2013 / 13:29