Jak mogę ponownie załadować wszystkie bufory na raz?


20

Podczas pracy nad gałęzią funkcji gitczęsto muszę ukryć moje zmiany, aby naprawić błąd w głównej gałęzi. Kiedy skończę pracować nad zmianami, ja git stash pop, który aktualizuje znaczniki czasu plików.

Mimo że pliki są identyczne, przy następnej próbie zapisania otrzymuję:

OSTRZEŻENIE: Plik został zmieniony od czasu jego odczytu !!!

Czy naprawdę chcesz do niego napisać (t / n)?

Nie chcę automatycznie ponownie ładować pliku za każdym razem, gdy zmienia się on na dysku, tylko gdy ja git stash pop.

W tej chwili ręcznie ponownie ładuję każdy bufor osobno ( :e). Czy mogę to zrobić za pomocą jednego polecenia?

Odpowiedzi:


26

Zobacz, :help bufdoco chcesz zrobić. Wykona polecenie w każdym buforze na liście buforów. Na przykład:

:bufdo e

Możesz także sprawdzić, czy :help noconfirmwyłączyć okno dialogowe potwierdzenia przed wydaniem bufdopolecenia

:set noconfirm

i włącz ponownie po wydaniu bufdopolecenia.

:set confirm

1
Aby życie, spróbuj: :bufdo! e.
kenorb

i bez drukowania wiadomości na ekranie: cicho! bufdo e
Werner

12

Możesz to zrobić za pomocą :checktimepolecenia. Z dokumentów :

: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.

Polecenie zapyta, co zrobić dla każdego bufora, którego plik ma zmieniony znacznik czasu. Aby wyłączyć to dla plików, które nie uległy zmianie, możesz :set autoreadzmusić vima do ich ponownego załadowania. vim będzie zapytać, czy zawartość między bufora oraz pliku na dysku uległy zmianie.

W celu ułatwienia użytkowania możesz ustawić mapę podobną do poniższej:

nnoremap <F5> :checktime<CR>

Oto kilka informacji bonusowych, które tak naprawdę nie są częścią odpowiedzi: dla mnie, w OpenSUSE, gvim (GUI GTK dla vima) robi to automatycznie, kiedy się skupia. Naprawdę nie wiem, dlaczego to robi i nie sprawdziłem na innych systemach, ale pomyślałem, że może być przydatny jako dodatek. Może ktoś może potwierdzić?
tokoyami

To jest naprawdę pomocne! Po mojej stronie zintegrowałem to polecenie jako część skrótów przełączania kart. tj.nnoremap tl :tabnext<CR>:checktime<CR>
cr8ivecodesmith

1
@tokoyami, funkcja, którą masz, gvimmoże być związana z FocusGainedwydarzeniem w vim. Kilka powiązanych informacji można znaleźć tutaj - unix.stackexchange.com/a/383044/99801 .
Victor Yarema,
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.