2016-09-22 3 views
1

いくつかの外部コマンドを実行するオートコマンドを定義したいだけです。たとえば、コンパイル後に自動生成されたファイルをいくつか削除します。私はWindowsとLinuxの両方で動作し、これらの2つのプラットフォームで使用される外部コマンドは異なります。Vim:augroupで "if"を使う?

そこで、私が定義することができます。

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ステートメントを使用できる関数に外部コマンドを書き込むことです。次に、通常の方法でオートコマンドを定義し、この関数を呼び出します。どちらが良いですか?

ありがとうございます!

+1

絶対に、双方向で動作します。最初のものは清潔ですが、やや効率的です。 –

+0

は大丈夫です。 –

答えて

3

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を正しく削除しました。

関連する問題