解决方案

解决方案

我正在 vim 中搜索替换命令,用于删除文件中的每个分号(如果它是该行的最后一个字符)。

我已经找到了这个命令,它会在行尾切换分号:

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

有人可以帮我吗?

解决方案

  • 我正在搜索的命令是我在保存文件后想要进行的更大清理的一部分。完整的解决方案看起来像这样

" 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\+/\1/ | silent! :%s#\($\n\s*\)\+\%$## | :%s/;$

答案1

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

其中按;;in会将行尾 ( ) 处的normal mode所有内容替换为空 ( );;$//

答案2

如果分号是该行的最后一个字符,以下命令将删除它。

使用 sed 尝试以下命令,

sed 's/;*$//g' <file1> file2

相关内容