Vim: 在augroup中使用"if"?
Vim: Use "if" in augroup?
我只想定义一个自动命令来执行一些外部命令。例如,删除一些编译后自动生成的文件。我在 Windows 和 Linux 上工作,这两个平台上使用的外部命令是不同的。
因此,我可以定义:
if has("win32")
autocmd foo bar_win
else
autocmd foo bar_nix
endif
如果我想在 augroup
中定义这个自动命令,我是否应该简单地将这段代码放入一个 augroup 中,例如:
augroup fooo
autocmd!
if has("win32")
autocmd foo bar_win
else
autocmd foo bar_nix
endif
augroup END
我试过这个方法,好像有用。我想知道这是否是正确的方法。我可以考虑的另一种方法是将外部命令写入一个函数,我可以在其中使用 if
语句。然后按照通常的方式定义自动命令并调用这个函数。哪个更好?
谢谢!
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
.
时它们会被正确删除
我只想定义一个自动命令来执行一些外部命令。例如,删除一些编译后自动生成的文件。我在 Windows 和 Linux 上工作,这两个平台上使用的外部命令是不同的。
因此,我可以定义:
if has("win32")
autocmd foo bar_win
else
autocmd foo bar_nix
endif
如果我想在 augroup
中定义这个自动命令,我是否应该简单地将这段代码放入一个 augroup 中,例如:
augroup fooo
autocmd!
if has("win32")
autocmd foo bar_win
else
autocmd foo bar_nix
endif
augroup END
我试过这个方法,好像有用。我想知道这是否是正确的方法。我可以考虑的另一种方法是将外部命令写入一个函数,我可以在其中使用 if
语句。然后按照通常的方式定义自动命令并调用这个函数。哪个更好?
谢谢!
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
. 时它们会被正确删除