ディスク上のバージョンからファイルを更新するコマンドは:e!
バッファ内のすべてのファイルに同じことを行うにはどうすればよいですか?
背景:必要なのは、バッファーを含む1つのvimを開いた状態で複数のブランチでgitを使用しているためです。ブランチをチェックアウトするときに、vimを更新したいと思います。
bufdo
のドキュメントを読んでください。必要なことを行うはずです。
:checkt[ime]
コマンドは、まさにこの目的のために設計されています。
変更されたバッファをリロードするよう求められます。プロンプトをスキップしたい場合は、:set autoread
事前に(まだローカルに保存されていない変更があるバッファーのプロンプトが表示されます)。
また、受け入れられた回答についてSteven Luが言及した構文強調表示の問題も回避します。 :bufdo
は、設計による構文の強調表示をオフにします 。
これが私が.vimrcに入れたものです:
fun! PullAndRefresh()
set noconfirm
!git pull
bufdo e!
set confirm
endfun
nmap <leader>gr call PullAndRefresh()
:help autoread
から:
ファイルがVimの外部で変更されたことが検出され、Vimの内部で変更されていない場合、自動的に再度読み取ります。ファイルが削除されると、これは行われません。
私のように、常に受動的にだけをしたい場合(-===-)古くなったが変更されていないバッファーをリロードすると、これで仕事が完了したように見えます。
ただし、最終的な詳細はwhenvimは古いバッファに気づきます。 checktime
で強制できます。 フォーカスイベントのセットアップ がある場合、次のようにフォーカスを取得するたびにchecktime
を実行できます。
set autoread
autocmd FocusGained * checktime
この回答 には興味深い詳細もあります。
@Matthew Sがここで言及されているように https://vi.stackexchange.com/a/462 を使用できます:
:set noconfirm
:bufdo !e
:set confirm