Tüm arabellekleri bir kerede nasıl yeniden yükleyebilirim?


20

Bir özellik dalında çalışırken git, ana dalda bir hata düzeltmesi yapmak için sık sık değişikliklerimi saklamam gerekiyor. Değişiklikler üzerinde çalışmayı bitirdiğimde git stash pop, dosyalardaki zaman damgalarını güncelleyen I.

Dosyalar aynı olsa da, bir dahaki sefere kaydetmeye çalıştığımda şunu alıyorum:

UYARI: Dosya okunduğundan beri değiştirildi !!!

Gerçekten yazmak istiyor musunuz (y / n)?

Dosyayı diskte her değiştiğinde otomatik olarak yeniden yüklemek istemiyorum, yalnızca ben git stash pop.

Şu anda, her arabelleği ayrı ayrı manuel olarak yeniden yüklüyorum ( :e). Bunu tek bir komutla yapabilmemin bir yolu var mı?

Yanıtlar:


26

:help bufdoNe yapmak istediğinize bakın . Arabellek listesindeki her arabellekte bir komut yürütür. Örneğin:

:bufdo e

Komutu :help noconfirmvermeden önce onay iletişim kutusunu devre dışı bırakmak da isteyebilirsiniz.bufdo

:set noconfirm

ve bufdokomuttan sonra yeniden etkinleştirme .

:set confirm

1
Kuvvet için deneyin: :bufdo! e.
kenorb

ve ekrana mesaj yazdırmadan: sessiz! bufdo e
Werner

12

Bunu :checktimekomutla yapabilirsiniz. Gönderen docs :

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

Komut, dosyasında zaman damgası değişen her arabellek için ne yapılacağını soracaktır. Bunu değiştirmemiş dosyalar için devre dışı bırakmak için :set autoreadvim'i yeniden yüklemeye zorlayabilirsiniz. vim olacak tampon ve diskteki dosya arasında içeriği değişti diye sormak.

Kullanım kolaylığı için aşağıdaki gibi bir harita oluşturabilirsiniz:

nnoremap <F5> :checktime<CR>

İşte cevabın bir parçası olmayan bazı bonus bilgiler: Benim için OpenSUSE'de gvim (vim için GTK GUI) odaklanınca bunu otomatik olarak yapıyor. Neden yaptığını gerçekten bilmiyorum ve diğer sistemleri kontrol etmedim ama ekstra olarak yararlı olabileceğini düşündüm. Belki bazıları onaylayabilir?
tokoyami

Bu gerçekten faydalı! Sonunda yaptığım şey, bu komutu sekme değiştirme kısayollarımın bir parçası olarak entegre etmekti. iennoremap tl :tabnext<CR>:checktime<CR>
cr8ivecodesmith

1
@tokoyami, içinde bulunduğunuz özellik etkinlikle gvimilgili olabilir . Bununla ilgili bazı bilgileri burada bulabilirsiniz - unix.stackexchange.com/a/383044/99801 . FocusGainedvim
Victor Yarema
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.