バッファ内のすべてのファイルをvimのディスクから更新します


123

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

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

背景:バッファを含む1つのvimが開いている複数のブランチでgitを使用しているため、これが必要です。ブランチをチェックアウトするとき、vimをリフレッシュしたいと思います。

回答:


87

のドキュメントを読んbufdoでください。必要な処理が行われるはずです。


33
わかりました、:bufdo e!それを行います。しかし、毎回プロンプトロード(Y / N)があります。どうすればそれを取り除くことができますか?
odwl 2009

21
コマンドを使用するset noconfirm前に使用しますbufdoset confirm後で再実行可能にします)。
pmf 2009

22
bufdo e奇妙なことに、すべてのバッファーを構文の強調表示なしで残します
Steven Lu

4
@StevenLu以下のPaulFenneyの回答を確認してください。
DBedrenko 2014

12
なぜ人々はこれを投票しているのですか?答えだけでなく、それが導く方向は、リロード後に構文の強調表示が無効になることを意味します。
ドミトリーミンコフスキー2015年

120

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

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

また、Steven Luが認めた回答について述べた構文強調表示の問題も回避します。:bufdo構文による強調表示をオフにします

見つけた場所:http : //vim.1045645.n5.nabble.com/Bug-report-bufdo-e-breaking-syntax-highlighting-on-displayed-buffers-tp1209995p1209998.html


19

これが私が.vimrcに入れたものです:

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

nmap <leader>gr call PullAndRefresh()

7

から:help autoread

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

私のように、いつも受動的に古くて変更されていないバッファーリロードし。

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

set autoread
autocmd FocusGained * checktime

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


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.