124

ディスク上のバージョンからファイルを更新するコマンドは次のとおりです。:e!

バッファ内のすべてのファイルに対して同じことを行うにはどうすればよいですか?

背景:バッファを含む1つのvimを開いた状態で複数のブランチでgitを使用しているため、これが必要です。ブランチをチェックアウトするときに、vimを更新してもらいたいです。

4

5 に答える 5

122

この:checkt[ime]コマンドは、まさにこの目的のために設計されています。

変更されたバッファをリロードするように求められます。プロンプトをスキップしたい場合は、:set autoread事前に行うことができます(ローカルの未保存の変更を含むバッファーでプロンプトが表示されます)。

また、受け入れられた回答についてStevenLuが言及した構文の強調表示の問題を回避します。:bufdo設計による構文の強調表示をオフにします

経由で見つかりました:http://vim.1045645.n5.nabble.com/Bug-report-bufdo-e-breaking-syntax-highlighting-on-displayed-buffers-tp1209995p1209998.html

于 2014-01-24T11:41:37.947 に答える
86

のドキュメントを読んbufdoでください、それはあなたが望むことをするはずです。

于 2009-08-13T13:40:33.710 に答える
19

これが私の.vimrcに入れてしまったものです:

fun! PullAndRefresh()
  set noconfirm
  !git pull
  bufdo e!
  set confirm
endfun

nmap <leader>gr call PullAndRefresh()
于 2012-09-19T16:57:54.277 に答える
7

差出人:help autoread

ファイルがVimの外部で変更されたことが検出され、Vimの内部で変更されていない場合は、自動的に再度読み取ります。ファイルが削除されている場合、これは実行されません。

私のように、常に古いが変更されていないバッファを受動的にリロードしたい場合は、これで作業が完了するはずです。

ただし、最後の詳細は vimが古いバッファーに気付いたときです。それはで強制することができますchecktimeフォーカスイベントを設定している場合は、次checktimeのようにフォーカスを取得するたびに実行できます。

set autoread
autocmd FocusGained * checktime

この回答にも興味深い詳細がいくつかあります。

于 2016-12-07T08:18:39.853 に答える
1

@Matthew Sがhttps://vi.stackexchange.com/a/462で言及しているように、次を使用できます。

:set noconfirm
:bufdo !e
:set confirm
于 2019-08-06T05:03:27.363 に答える