vim: comando para remover ponto-e-vírgula se for o último caractere da linha

1

Eu estou procurando por um comando de substituição no vim para remover cada ponto-e-vírgula em um arquivo, se este for o último caractere da linha.

Eu já encontrei este comando, que alterna um ponto-e-vírgula no final da linha:

nnoremap ;; :s/\v(.)$/\=submatch(1)==';' ? '' : submatch(1).';'<CR>

Alguém pode me ajudar aqui?

SOLUÇÃO

  • o comando que eu estava procurando, fazia parte de uma limpeza um pouco maior que eu queria fazer depois de salvar um arquivo. a solução completa parece que

" greenkeeping files " consecutive blank lines: https://unix.stackexchange.com/questions/12812/replacing-multiple-blank-lines-with-a-single-blank-line-in-vim-sed " whitespaces: https://stackoverflow.com/questions/356126/how-can-you-automatically-remove-trailing-whitespace-in-vim " last empty line: https://stackoverflow.com/questions/7495932/how-can-i-trim-blank-lines-at-the-end-of-file-in-vim " last semicolon: https://unix.stackexchange.com/posts/462443 autocmd BufWritePre *.test silent! :%s/\s\+$//e | silent! :%s/\(\n\n\)\n\+// | silent! :%s#\($\n\s*\)\+\%$## | :%s/;$

    
por divramod 14.08.2018 / 08:47

2 respostas

1
nnoremap ;; :%s/;$//<CR>

onde pressionar ;; em normal mode substitui todos os ; no final da linha ( ;$ ) sem nada ( // )

    
por 14.08.2018 / 09:54
0

O comando abaixo removerá o ponto-e-vírgula, se este for o último caractere da linha.

Experimente o comando abaixo usando sed

sed 's/;*$//g' <file1> file2
    
por 14.08.2018 / 11:31