我已经给出了在 vim 中删除尾随空格的配置
au BufWritePre *.rb :%s/\s\+$//e
au BufWritePre *.html :%s/\s\+$//e
au BufWritePre *.js :%s/\s\+$//e
au BufWritePre *.jsx :%s/\s\+$//e
au BufWritePre *.json :%s/\s\+$//e
Run Code Online (Sandbox Code Playgroud)
问题
我有一个有多个开发人员在工作的项目,这是一个很大的项目。我不想通过删除此项目中现有的尾随空格而引起大量冲突。
预期的
我只想为该特定项目禁用此配置。假设我的项目在~/work/projectA.
首先,您可以使用单个自动命令完成所有这些操作:
au BufWritePre *.{rb,html,js,jsx,json} %s/\s\+$//e
Run Code Online (Sandbox Code Playgroud)
其次,你应该把它放在一个合适的“augroup”中:
augroup TrailingSpaces
autocmd!
autocmd BufWritePre *.{rb,html,js,jsx,json} %s/\s\+$//e
augroup END
Run Code Online (Sandbox Code Playgroud)
第三,您可以使用另一个(可能有点笨手笨脚的)自动命令为该特定项目禁用该组:
augroup SpecialProject
autocmd!
autocmd BufNewFile,BufRead ~/work/projectA/**/* autocmd! TrailingSpaces
augroup END
Run Code Online (Sandbox Code Playgroud)
第四,在之后失去光标位置:%s/\s\+$//e并不好玩。如果我是你,我会做这样的事情:
augroup TrailingSpaces
autocmd!
autocmd BufWritePre *.{rb,html,js,jsx,json} let w:wv = winsaveview() | %s/\s\+$//e | call winrestview(w:wv)
augroup END
Run Code Online (Sandbox Code Playgroud)
见:help winsaveview()。