1

在 VIM 中保存/写入时,我想修剪尾随空格并确保文件的行尾是 UNIX 而不是 DOS。

这两个命令都可以单独工作,但我不知道如何让它们在 VIM 中写入/保存文件时同时运行。

autocmd BufWritePre,FileWritePre * :%s/\s\+$//e
autocmd BufWritePre,FileWritePre * :%s/\r$//

我已经尝试了以下所有方法,但 VIM 仍然抛出错误:

autocmd BufWritePre,FileWritePre * :%s/\s\+$//e|:%s/\r$//

或者

autocmd BufWritePre,FileWritePre * %s/\s\+$//e|%s/\r$//

augroup prewrites
    autocmd!
    autocmd BufWritePre,FileWritePre * :%s/\s\+$//e
    autocmd BufWritePre,FileWritePre * :%s/\r$//                                                                                             
augroup END 

这些都不会产生预期的结果而不会被 VI 抛出错误。有什么帮助吗?

4

1 回答 1

6

我终于弄明白了。罪魁祸首并没有结束第二次搜索e。见下面的最终结果:

augroup prewrites
   autocmd!
    autocmd BufWritePre,FileWritePre * :%s/\s\+$//e | %s/\r$//e
augroup END 
于 2012-09-21T18:42:44.853 回答