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