如何在 .vimrc 中设置两个 autocmd BufWritePre

Jes*_*son 1 vi vim autocmd

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

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

autocmd BufWritePre,FileWritePre * :%s/\s\+$//e
autocmd BufWritePre,FileWritePre * :%s/\r$//
Run Code Online (Sandbox Code Playgroud)

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

autocmd BufWritePre,FileWritePre * :%s/\s\+$//e|:%s/\r$//
Run Code Online (Sandbox Code Playgroud)

或者

autocmd BufWritePre,FileWritePre * %s/\s\+$//e|%s/\r$//
Run Code Online (Sandbox Code Playgroud)

augroup prewrites
    autocmd!
    autocmd BufWritePre,FileWritePre * :%s/\s\+$//e
    autocmd BufWritePre,FileWritePre * :%s/\r$//                                                                                             
augroup END 
Run Code Online (Sandbox Code Playgroud)

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

Jes*_*son 6

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

augroup prewrites
   autocmd!
    autocmd BufWritePre,FileWritePre * :%s/\s\+$//e | %s/\r$//e
augroup END 
Run Code Online (Sandbox Code Playgroud)