3

我只想定义一个执行一些外部命令的自动命令。例如,在编译后删除一些自动生成的文件。我在 Windows 和 Linux 上工作,在这两个平台上使用的外部命令是不同的。

因此,我可以定义:

    if has("win32")
        autocmd foo bar_win
    else
        autocmd foo bar_nix
    endif

如果我想在 a 中定义这个自动命令augroup,我应该简单地将这段代码放入一个 augroup 中,如:

    augroup fooo
        autocmd!
        if has("win32")
            autocmd foo bar_win
        else
            autocmd foo bar_nix
        endif
    augroup END

我尝试了这种方法,似乎可行。我想知道这是否是正确的方法。我可以考虑的另一种方法是将外部命令写入可以在其中使用if语句的函数。然后以通常的方式定义自动命令并调用此函数。哪个更好?

谢谢!

4

1 回答 1

4

augroup foo并且augroup END不要分隔代码块,因此将功能检查放在那里或其他地方都没关系。

但是,如果您想要安全性灵活性,您可以遵循这种替代模式。

  1. 在您的顶部附近定义一个空的自动命令组vimrc

    augroup foo
        autocmd!
    augroup END
    
  2. 稍后运行您的功能检查:

    if has("win32")
        autocmd foo Event * command for windows
    else
        autocmd foo Event * command for unices
    endif
    

    由于您的自动命令属于组foo,因此当您:source $MYVIMRC.

于 2016-09-22T11:13:57.243 回答