我只想定义一个执行一些外部命令的自动命令。例如,在编译后删除一些自动生成的文件。我在Windows和Linux上工作,在这两个平台上使用的外部命令是不同的。
因此,我可以定义:
if has("win32")
autocmd foo bar_win
else
autocmd foo bar_nix
endif
如果我想在augroup
中定义这个自动命令,我应该简单地将这段代码放入一个像这样的群组:
augroup fooo
autocmd!
if has("win32")
autocmd foo bar_win
else
autocmd foo bar_nix
endif
augroup END
我尝试了这种方法,看起来这很有效。我想知道这是否是正确的方法。我能想到的另一种方法是将外部命令写入一个我可以使用if
语句的函数中。然后以通常的方式定义自动命令并调用此函数。哪个更好?
谢谢!
答案 0 :(得分:3)
augroup foo
和augroup END
不会划分代码块,因此如果您将功能检查放在那里或其他位置并不重要。
但是如果你想要安全和的灵活性,你可以遵循这种替代模式。
在vimrc
顶部附近的某处定义一个空的自动命令组:
augroup foo
autocmd!
augroup END
稍后运行您的功能检查:
if has("win32")
autocmd foo Event * command for windows
else
autocmd foo Event * command for unices
endif
由于您的自动命令属于组foo
,因此:source $MYVIMRC
时会正确删除它们。