0

我同时使用Chiel92/vim-autoformatntpeters/vim-better-whitespace。第一个用于自动格式化代码,第二个用于删除额外的空格。我希望他们两个都使用 autocmd 在保存文件时调用它们。看来我没有正确使用 autocmd。我希望有人可以帮助我,因为我对 vimL 知之甚少。

我曾经有以下在保存时启用自动格式化:

Plugin 'Chiel92/vim-autoformat'
let auto_format_type_list = ['c', 'cpp', 'py']
autocmd BufWritePre * if index(auto_format_type_list, &ft) >= 0 | Autoformat | endif

而且我还使用'ntpeters/vim-better-whitespace',它也会在保存时去除过多的空格。

Plugin 'ntpeters/vim-better-whitespace'
" turn on by default for all filetypes
autocmd BufWritePre * StripWhitespace

问题在于他们每个人都可以完美地工作。但是当将它们放在 .vimrc 中时,它们中的至少一个将不起作用,这取决于脚本中第一个出现的人。

这是我在倾倒 :au BufWritePre 后所拥有的

:au bufwritepre
--- Auto-Commands ---
BufWrite
    *         if index(auto_format_type_list, &ft) >= 0 | Autoformat | endif
              StripWhitespace

更新 ...

玩了一段时间后,我发现通过更改保存时自动格式化的方式:

 autocmd BufWritePre * call Determine_if_auto_format()
 function! Determine_if_auto_format()
   let auto_format_type_list = ['c', 'cpp', 'py']
   if index(auto_format_type_list, &ft) >= 0
     Autoformat
   endif
 endfunction

他们俩都可以互相合作。

有人可以帮我理解这里发生了什么吗?谢谢!

4

0 回答 0