すべてのバッファを一度にリロードするにはどうすればよいですか?


20

で機能ブランチで作業するときgit、メインブランチのバグ修正をコミットするために頻繁に変更を隠しておく必要があります。変更の作業が完了したらgit stash pop、ファイルのタイムスタンプを更新するIを使用します。

ファイルが同一であっても、次に保存しようとすると、次のようになります。

警告:ファイルは読み取られてから変更されました!!!

本当に書き込みますか(y / n)?

ディスク上でファイルが変更されるたびにファイルを自動的にリロードしたくありませんgit stash pop

現在、各バッファを個別に手動でリロードしています(:e)。1つのコマンドでこれを行う方法はありますか?

回答:


26

:help bufdoあなたがしたいことを参照してください。バッファリスト内の各バッファでコマンドを実行します。例えば:

:bufdo e

コマンドを:help noconfirm発行する前に確認ダイアログを無効にすることもできます。bufdo

:set noconfirm

bufdoコマンドの後に再度有効にします。

:set confirm

1
強制するには、次を試してください:bufdo! e
ケノーブ

画面にメッセージを出力せずに:サイレント!bufdo e
ヴェルナー

11

:checktimeコマンドでこれを行うことができます。ドキュメントから:

:checkt[ime]        Check if any buffers were changed outside of Vim.
                    This checks and warns you if you would end up with two
                    versions of a file.

このコマンドは、ファイルのタイムスタンプが変更された各バッファーに対して何を行うかを尋ねます。変更されていないファイルに対してこれを無効にするには:set autoread、vimにそれらをリロードさせるだけです。vim 、バッファとディスク上のファイルの間の内容が変更されたかどうか尋ねます。

使いやすいように、次のようなマップをセットアップできます。

nnoremap <F5> :checktime<CR>

答えの一部ではないボーナス情報を次に示します。私にとって、OpenSUSEでは、gvim(vimのGTK GUI)がフォーカスを獲得すると自動的にこれを行います。私はそれがなぜそれをするのか本当に知りません、そして、私は他のシステムでチェックしませんでした、しかし、私はそれが余分として役に立つかもしれないと思いました。多分誰かが確認できますか?
とこやみ

これは本当に役に立ちます!私が最後にしたことは、このコマンドをタブ切り替えショートカットの一部として統合することでした。すなわちnnoremap tl :tabnext<CR>:checktime<CR>
cr8ivecodesmith

1
@tokoyami、あなたが持っている機能はのイベントにgvim関連しているかもしれません。関連情報は、unix.stackexchange.com / a / 383044/99801にあります。FocusGainedvim
ビクターヤレマ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.