在BufWritePre上调用多个autocmd

时间:2016-03-28 06:37:44

标签: vim autocmd viml

我正在使用Chiel92/vim-autoformatntpeters/vim-better-whitespace。第一个是autoformat代码,第二个是删除额外的空格。他们两个我希望使用autocmd在保存文件上调用它们。似乎我没有正确使用autocmd。我希望有人可以帮助我,因为我对vimL知之甚少。

我曾经有以下内容在保存时启用autoformat:

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

它们都可以互相协作。

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

0 个答案:

没有答案