.vimrc
Vimからファイルを編集し、Vimを再起動せずに適用したい。
回答:
はい、:so %
.vimrcの編集中にコマンドを使用するだけです。
vimで設定を自動リロードする場合は、次のコマンドを追加する必要があります。
augroup myvimrchooks
au!
autocmd bufwritepost .vimrc source $MYVIMRC
augroup END
自動コマンドのグループ化は、構成を数回保存した場合に「指数関数的な」再ロードを回避するためにここにあります。
Function Inc already exist, add ! to replace it
ます。
autocmd! bufwritepost .vimrc source ~/.vimrc
か?なんらかの理由でグループが必要になったとしても、3行目をautocmd!
?で始まるように書き直せば、2行目を省略できませんでした。
Mac / Windows / Linuxで実行している場合、よりクロスプラットフォーム互換のバージョンがありますgvimrc
。
augroup myvimrc
au!
au BufWritePost .vimrc,_vimrc,vimrc,.gvimrc,_gvimrc,gvimrc so $MYVIMRC | if has('gui_running') | so $MYGVIMRC | endif
augroup END
autocmdはすべての潜在的な*vimrc
ファイルを監視し、vimrc
ファイルが変更されると、ファイルを再ロードしてからgvimrc
、GUIが実行されているかどうかを確認します。
:help gvimrc
$GVIMRC
が、存在しない場合もあるため、存在するかどうかも確認します。 if has('gui_running') && filereadable($MYGVIMRC)
au BufWritePost $MYVIMRC
やau BufWritePost $MYVIMRC,$MYGVIMRC
?
" Quickly edit/reload this configuration file
nnoremap gev :e $MYVIMRC<CR>
nnoremap gsv :so $MYVIMRC<CR>
保存時に自動的にリロードするには、以下を追加します$MYVIMRC
。
if has ('autocmd') " Remain compatible with earlier versions
augroup vimrc " Source vim configuration upon save
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
そして最後に、次のように入力します。
:so %
次回保存するとvimrc
、自動的に再読み込みされます。
特徴:
:messages
)fugitive://
差分を無視します)vim-tiny
もちろん、自動リロードはvimrc
、vimで編集した場合にのみ発生します。
vim
、私が編集しているのと同じインスタンスでファイルがすべて開いている場合にのみ機能するようです$MYVIMRC
。たとえば、それらが別の端末にある場合でも、手動でソースを取得する必要があります$MYVIMRC
。これを回避する方法はありますか?
vim
がファイルを書き出すときにキャッチすることによって機能します。ファイル自体のmtimeを監視することは可能かもしれませんが、非同期ポーリングなしでそれを行う方法がわかりません。
gvimrc
ファイルが呼び出された_vimrc
場合vimrc
、または.vimrc
別のディレクトリで呼び出されたファイルを編集した場合には機能しないことに注意してください。これらの問題に対処するには、私の回答を参照してください。