簡體   English   中英

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:

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

我試過這種方法,看起來這很有效。 我想知道這是否是正確的方法。 我能想到的另一種方法是將外部命令寫入一個我可以使用if語句的函數中。 然后以通常的方式定義自動命令並調用此函數。 哪個更好?

謝謝!

augroup fooaugroup 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM