让我说我的.vimrc中有以下内容:
au bufenter * RainbowParenthesesToggle
但是我在一台不熟悉的机器上,我还没有安装所有的插件。这意味着当我启动Vim时,我收到以下错误消息:
E492: Not an editor command: RainbowParenthesesToggle
我如何防范这种情况,或者我希望将这些调用包装起来以避免在启动Vim时收到此错误消息?
答案 0 :(得分:7)
最简单的方法是通过:silent!
取消错误消息(请注意!
):
:au bufenter * silent! RainbowParenthesesToggle
它更干净(特别是对于在每个BufEnter
上运行的autocmd)以避免呼叫。可以使用exists(':RainbowParenthesesToggle') == 2
检查是否存在命令。
:au bufenter * if exists(':RainbowParenthesesToggle') == 2 | RainbowParenthesesToggle | endif
最好只检查一次,并完全避免定义autocmd。问题是您的~/.vimrc
来源于插件之前!有两种方法:
1)在检查之前明确地获取插件:
runtime! plugin/rainbowparentheses.vim
if exists(':RainbowParenthesesToggle') == 2
au bufenter * RainbowParenthesesToggle
endif
2)将定义和条件移动到插件后源的位置。 ~/.vim/after/plugin/rainbowparentheses.vim
将是一个很好的地方。
答案 1 :(得分:1)
您可以使用exists()
检查命令:
au bufenter * if exists(":RainbowParenthesesToggle") | RainbowParenthesesToggle | endif
(我自己没有定义这样的命令,所以我可以验证这是否有效。:))