サーチ…
備考
サラウンド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