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.

Odpowiedzi:


87

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


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


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()

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.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.