2009-08-13 12 views
113

コマンドでディスクからバッファ内のすべてのファイルを更新しますか?ディスク上のバージョンからファイルを更新するにはvimの

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

答えて

83

bufdoのドキュメントを読んで、必要な操作を行う必要があります。

+31

大丈夫です:bufdo e!それを行います。しかし毎回即座にロード(Y/N)があります。どうすればそれを取り除くことができますか? – odwl

+21

'bufdo'コマンドを使う前に' set noconfirm'を使ってください( 'set confirm'をやり直してください)。 – pmf

+1

'bufdo e!'の代わりに 'bufdo e'(感嘆符は付きません)を使用します。保存されていない変更が検出されない場合は、ただ安全側にあるようにします – Watcom

17

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

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

nmap <leader>gr call PullAndRefresh() 
97

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

変更されたバッファを再ロードするように指示するメッセージが表示されます。プロンプトをスキップしたい場合は、あらかじめ:set autoreadを実行しておくことができます(ローカルの保存されていない変更があるバッファについてはプロンプトが表示されます)。

また、スティーブン・ルー(Suven Lu)が受理した答えに記載されている構文強調表示の問題も回避しています。 :bufdo turns off syntax highlighting by design:help autoreadからhttp://vim.1045645.n5.nabble.com/Bug-report-bufdo-e-breaking-syntax-highlighting-on-displayed-buffers-tp1209995p1209998.html

4

は経由見つかり

ファイルは外のVimの変更されたことが検出されていると、それはVimの内部で変更されていない、自動的に再びそれを読んだとき。ファイルが削除されると、これは行われません。

私のように、あなただけのが変更されていない古い-しかし、バッファをリロード常に受動的にしたい、場合、それは仕事を得る必要があるように、これはそうです。

vimが無効なバッファに気づいたときの最終的な詳細はです。それはchecktimeで強制することができます。あなたはfocus events set upを持っている場合は、我々はそうのような焦点を獲得するたびに、我々はchecktimeを実行することができます:

set autoread 
autocmd FocusGained * checktime 

This answerもいくつかの興味深い詳細があります。

関連する問題