サーチ…


備考

サラウンドautocmdコマンド

autocmdは相加的なコマンドなので、デフォルトではこの動作を望まないでしょう。

たとえば、編集中に.vimrcを数回再作成すると、vimが遅くなることがあります。

ここに証拠があります:

:autocmd BufWritePost * if &diff | diffupdate | endif " update diff after save
:autocmd BufWritePost * if &diff | diffupdate | endif " update diff after save

:autocmd BufWritePost *と入力すると、出力には両方の行が表示されます。どちらも実行されます。

この現象を回避するには、次のようにすべてのautocmd囲みます。

if has ('autocmd')       " Remain compatible with vi which doesn't have autocmd
  augroup MyDiffUpdate   " A unique name for the group.  DO NOT use the same name twice!
      autocmd!           " Clears the old autocommands for this group name
      autocmd BufWritePost * if &diff | diffupdate | endif   " Update diff after save
      " ... etc ...
  augroup END
endif

保存後.vimrcを自動的にソース化する

あなたの$MYVIMRCにこれを追加してください:

" Source vim configuration file whenever it is saved
if has ('autocmd')          " Remain compatible with earlier versions
 augroup Reload_Vimrc       " Group name.  Always use a unique name!
    autocmd!                " Clear any preexisting autocommands from this group
    autocmd! BufWritePost $MYVIMRC source % | echom "Reloaded " . $MYVIMRC | redraw
    autocmd! BufWritePost $MYGVIMRC if has('gui_running') | so % | echom "Reloaded " . $MYGVIMRC | endif | redraw
  augroup END
endif " has autocmd

特徴:

  • echomは、何が起こったのかをユーザに伝えます(また、ログ:messages )。
  • $MYVIMRCおよび$MYGVIMRCは、構成ファイルのプラットフォーム固有の名前を処理し、
  • 実際の構成ファイル(他のディレクトリのコピーやfugitive:// diffは無視します)にのみ一致します。
  • has()は、 vim-tinyなどの互換性のないバージョンを使用するとエラーを防止します。
  • autocmd!このファイルが再度ソース化されている場合、複数の同一の自動コマンドの蓄積を防ぎます。 (指定されたグループのすべてのコマンドをクリアするので、グループ名は重要です。)

ファイルが別のウィンドウに保存されている場合、vimdiffビューを更新する

:autocmd BufWritePost * if &diff | diffupdate | endif 


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow