我同时使用Chiel92/vim-autoformat
和ntpeters/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
他们俩都可以互相合作。
有人可以帮我理解这里发生了什么吗?谢谢!