vimで開いたままにする設定ファイルがありますが、ディスク上で変更されることがありますが、これらの変更は端末に反映されません。ファイルを閉じて再度開くことなく、画面上のコンテンツを更新できますか?もしそうなら、どのように?
vimで開いたままにする設定ファイルがありますが、ディスク上で変更されることがありますが、これらの変更は端末に反映されません。ファイルを閉じて再度開くことなく、画面上のコンテンツを更新できますか?もしそうなら、どのように?
回答:
:edit
ファイル名を指定せずにコマンドを使用して、現在のファイルをリロードできます。ファイルに変更を加えた場合:edit!
は、現在のファイルを強制的に再ロードするために使用でき
ます(変更は失われます)。
コマンド:edit
はで短縮できます:e
。したがって、強制編集は次の方法で実行できます。:e!
:e!
ます。
:edit
して:edit!
、使用することができます:e
し、:e!
それぞれ。
u
NDO :e!
。
:bufdo e
を使用してファイルを手動で更新:edit
することに加えて、~/.vimrc
:set autoread
Vimで編集されていないファイルをVimが自動的に更新するようにします。も参照してください:checktime
。
git pull
、画面上の保存していない変更を意図せずに失う可能性があることに気付いている場合。
:checktime
あなたの人生を良くするために追加する行のWrap-up
見出しにスキップしてvimrc
ください。
走る :checktime
Vimの外部でバッファが変更されていないか確認してください。これは、ファイルの2つのバージョンで終わるかどうかを確認して警告します。
変更を自動的にロードするには、次を追加しますvimrc
。
ファイルがVimの外部で変更されたことが検出され、Vimの内部で変更されていない場合、自動的に再度読み取ります。ファイルが削除された場合、これは行われません。
この答えは警告を追加します:
あなたは(のように実行した外部コマンドのような何かをしない限り、オートリードは、ファイルを再ロードしない
!ls
か、!sh
など)
ソリューションをお読みください。
に追加vimrc
:
au CursorHold,CursorHoldI * checktime
デフォルトでは、CURSORHOLDは、カーソルが4秒間まだ残っており、経由で設定可能です後にトリガされupdatetime。
vim 内でバッファーを変更するときvimrc
にトリガーするには、以下を追加します。autoread
au FocusGained,BufEnter * :checktime
持っているFocusGained
:(上記参照)普通VIM中の作業を、端末エミュレータ(Xtermの、TMUX、等)の内部にプラグインをインストール
VIM-TMUX-フォーカスイベントを
1.9以上のtmuxバージョンでは、以下を追加する必要があります.tmux.conf
。
set -g focus-events on
vimrc
上記のすべてを実装するための私の行は次のとおりです。
" Triger `autoread` when files changes on disk
" https://unix.stackexchange.com/questions/149209/refresh-changed-content-of-file-opened-in-vim/383044#383044
" https://vi.stackexchange.com/questions/13692/prevent-focusgained-autocmd-running-in-command-line-editing-mode
autocmd FocusGained,BufEnter,CursorHold,CursorHoldI * if mode() != 'c' | checktime | endif
" Notification after file change
" https://vi.stackexchange.com/questions/13091/autocmd-event-for-autoread
autocmd FileChangedShellPost *
\ echohl WarningMsg | echo "File changed on disk. Buffer reloaded." | echohl None