Como posso me livrar de espaços à direita no vim sem quebrar &?

0

Eu leio o wiki e coloco isso no meu vimrc:

autocmd FileType less,sass,yml,css,html,php,twig autocmd BufWritePre <buffer> :%s/\s\+$//e

Agora o problema é sempre que eu salvo & está quebrado: ele repete uma mistura da última substituição e a substituição. Se, por exemplo, eu faço :s/foo/bar e, em seguida, salve, & parece fazer :s/foo// . Eu gostaria que fizesse :s/foo/bar/ . Como posso restaurar essa funcionalidade?

    
por greg0ire 18.07.2013 / 11:08

2 respostas

1

Tente alterar a parte :%s... do seu comando automático para isso:

:call setline(1, map(getline(1,'$'), 'substitute(v:val,"\s\+$","","")'))
    
por 19.07.2013 / 21:43
1

Você teria que evitar o uso de :substitute , pois atualmente não há uma maneira fácil de salvar e restaurar a última string substituta; o :help function-undo-search não ajuda aqui.

A maioria dos plugins (como mostrado na página Wiki referenciada) também sofrem com este problema. Uma solução alternativa seria usar call setline(substitute(getline(lnum)), '\s\+$', '', '') em um loop em todas as linhas, mas isso é provavelmente muito mais lento que o :substitute .

    
por 18.07.2013 / 13:51

Tags