hub*_*nya 4 vim if-statement autocommand
我只想定义一个执行一些外部命令的自动命令。比如删除一些编译后自动生成的文件。我在Windows和Linux上工作,并且在这两个平台上使用的外部命令是不同的。
因此,我可以定义:
if has("win32")
autocmd foo bar_win
else
autocmd foo bar_nix
endif
Run Code Online (Sandbox Code Playgroud)
如果我想在 a 中定义这个自动命令augroup,我是否应该简单地将这段代码放入 augroup 中,例如:
augroup fooo
autocmd!
if has("win32")
autocmd foo bar_win
else
autocmd foo bar_nix
endif
augroup END
Run Code Online (Sandbox Code Playgroud)
我尝试了这个方法,看来这个方法有效。我想知道这是否是正确的方法。我可以考虑的另一种方法是将外部命令写入一个可以在其中使用if语句的函数。然后按照通常的方式定义自动命令并调用该函数。哪个更好?
谢谢!
augroup foo并且augroup END不要分隔代码块,因此无论您将功能检查放在那里还是其他地方都没有关系。
但如果您想要安全性和灵活性,您可以遵循这种替代模式。
在靠近顶部的位置定义一个空的自动命令组vimrc:
augroup foo
autocmd!
augroup END
Run Code Online (Sandbox Code Playgroud)稍后运行您的功能检查:
if has("win32")
autocmd foo Event * command for windows
else
autocmd foo Event * command for unices
endif
Run Code Online (Sandbox Code Playgroud)
由于您的自动命令属于组,foo因此当您执行:source $MYVIMRC.