Odśwież wszystkie pliki w buforze z dysku w vimie

124

Polecenie odświeżania pliku z wersji na dysku to :e!

Jak mogę zrobić to samo dla wszystkich plików w buforze?

Tło: potrzebuję tego, ponieważ używam git z wieloma gałęziami z jednym otwartym vimem, który zawiera bufor. Kiedy sprawdzam oddział, chciałbym odświeżyć vim.

odwl
źródło

Odpowiedzi:

87

Przeczytaj dokumentację bufdo, aby zrobić to, co chcesz.

pmf
źródło
33
ok, świetnie,: bufdo e! zrobi to. Ale za każdym razem pojawia się monit Load (T / N). Jak mogę się go pozbyć?
odwl
21
Użyj set noconfirmprzed użyciem bufdopolecenia ( set confirmpóźniej, aby ponownie naprawić).
pmf
22
bufdo eco ciekawe, wszystkie bufory nie są podświetlone
Steven Lu
4
@StevenLu Sprawdź odpowiedź PaulaFenneya poniżej.
DBedrenko,
12
Dlaczego ludzie głosują za tym? To nie tylko nie odpowiedź, ale kierunek, w którym prowadzi, oznacza, że ​​podświetlenie składni zostanie wyłączone po przeładowaniu.
Dmitry Minkovsky
120

:checkt[ime]Polecenie jest przeznaczone do tego samego celu.

Wyświetli monit o ponowne załadowanie wszystkich zmienionych buforów; jeśli chcesz pominąć monit, możesz to zrobić :set autoreadwcześniej (nadal będziesz otrzymywać monit o buforach z lokalnymi niezapisanymi zmianami).

Unika również kwestii podkreślania składni, o której wspomniał Steven Lu w zaakceptowanej odpowiedzi; :bufdowyłącza podświetlanie składni według projektu .

Znalezione przez: http://vim.1045645.n5.nabble.com/Bug-report-bufdo-e-breaking-syntax-highlighting-on-displayed-buffers-tp1209995p1209998.html

Paul Fenney
źródło
19

Oto, co ostatecznie umieściłem w moim .vimrc:

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

nmap <leader>gr call PullAndRefresh()
Ivan
źródło
7

Od :help autoread:

Kiedy wykryto, że plik został zmieniony poza Vimem i nie został zmieniony wewnątrz Vima, automatycznie przeczytaj go ponownie. Po usunięciu pliku nie jest to wykonywane.

Jeśli, tak jak ja, chcesz zawsze biernie ponownie ładować stare, ale niezmodyfikowane bufory, to wydaje się, że powinno to wykonać zadanie.

Jednak ostatni szczegół jest wtedy, gdy vim zauważy nieaktualny bufor. Można to wymusić checktime. Jeśli masz skonfigurowane zdarzenia fokusowe , możemy je uruchomić, checktimegdy tylko się skupimy:

set autoread
autocmd FocusGained * checktime

Ta odpowiedź zawiera również kilka interesujących szczegółów.

phs
źródło