的命令從版本上盤刷新文件:e!
刷新緩衝區中的所有文件在vim
我如何可以做同樣的緩衝區中的所有文件?
背景:我需要這樣做,因爲我在一個包含緩衝區的vim打開的情況下使用了多個分支的git。當我結帳分支時,我想要刷新vim。
的命令從版本上盤刷新文件:e!
刷新緩衝區中的所有文件在vim
我如何可以做同樣的緩衝區中的所有文件?
背景:我需要這樣做,因爲我在一個包含緩衝區的vim打開的情況下使用了多個分支的git。當我結帳分支時,我想要刷新vim。
閱讀bufdo
的文檔,它應該做你想做的事情。
這裏是我最後決定將在我的.vimrc:
fun! PullAndRefresh()
set noconfirm
!git pull
bufdo e!
set confirm
endfun
nmap <leader>gr call PullAndRefresh()
的:checkt[ime]
命令是專爲這個目的。
它會提示您重新加載任何已更改的緩衝區;如果你想跳過提示,你可以事先做:set autoread
(你仍然會在本地未保存的更改的緩衝區中得到一個提示)。
它也避免了接受答案中Steven Lu提到的語法高亮問題; :bufdo
turns off syntax highlighting by design。
從:help autoread
:
當已經檢測到文件Vim之外被改變,它並沒有被改變的Vim內,自動讀一遍。當文件被刪除時,這不會完成。
如果像我一樣,你只是想總是被動重裝陳舊但很未修改的緩衝區,那麼這似乎應該把工作做好。
但是最後的細節是當 vim注意到陳舊的緩衝區。這可以通過checktime
來強制執行。
set autoread
autocmd FocusGained * checktime
This answer也有一些有趣的細節:如果你有focus events set up,那麼我們就可以每當我們獲得焦點,像這樣運行checktime
。
好的太好了,:bufdo e!會做到這一點。但每次都有一個提示加載(Y/N)。我怎樣才能擺脫它? – odwl 2009-08-13 13:44:24
使用'set noconfirm'在使用'bufdo'命令之前('set confirm'之後可以重複使用)。 – pmf 2009-08-13 13:59:47
我會使用'bufdo e'(沒有感嘆號)而不是'bufdo e!',因爲它可以檢測到沒有保存的變化,而這些變化應該沒有,只是爲了安全起見 – Watcom 2013-03-07 17:36:38