Vim'de açık tuttuğum bir yapılandırma dosyasına sahibim, ancak bazen bu değişiklikler terminale yansıtılmadan diskte değişiyor. Dosyayı kapatıp yeniden açmadan ekrandaki içeriği yenileyebilir miyim? Öyleyse nasıl?
Vim'de açık tuttuğum bir yapılandırma dosyasına sahibim, ancak bazen bu değişiklikler terminale yansıtılmadan diskte değişiyor. Dosyayı kapatıp yeniden açmadan ekrandaki içeriği yenileyebilir miyim? Öyleyse nasıl?
Yanıtlar:
:editGeçerli dosyayı yeniden yüklemek için bir dosya adı belirtmeden komutu kullanabilirsiniz . Dosyada değişiklikler yaptıysanız :edit!, geçerli dosyanın yeniden yüklenmesini zorlamak için kullanabilirsiniz
(değişikliklerinizi kaybedersiniz).
Komut :editile kısaltılabilir :e. Kuvvet düzenleme böylece yapılabilir:e!
:e!.
:editve :edit!kullanabileceğiniz :eve :e!sırasıyla.
ubaşaramazsın :e!.
:bufdo e
Dosyayı el ile yenilemenin yanı sıra :edit,~/.vimrc
:set autoread
Vim'in Vim tarafından düzenlenmemiş dosyaları otomatik olarak yenilemesini sağlamak için. Ayrıca bkz :checktime.
git pullekranda kaydedilmemiş değişikliklerinizi istemeden kaybedebilirsiniz.
gvimHarici komutları kullanmanız veya çalıştırmanız gerekir.
:checktime
Hayatınızı daha iyi hale getirmek için eklenecek satırların Wrap-upbaşlığına atlayın vimrc.
Çalıştırmak :checktime
Tamponun Vim dışında değiştirilip değiştirilmediğini kontrol edin. Bir dosyanın iki sürümüyle sonuçlanırsa bu sizi kontrol eder ve uyarır.
Değişiklikleri otomatik olarak yüklemek için şunu ekleyin vimrc:
Bir dosyanın Vim dışında değiştirildiği ve Vim'in içinde değiştirilmediği tespit edildiğinde, otomatik olarak tekrar okuyun. Dosya silindiğinde bu yapılmaz.
Bu cevap bir uyarı ekler:
Harici komutu çalıştır (
!lsveya!shbenzeri) gibi bir şey yapmazsanız, Autoread dosyayı yeniden yüklemez
Çözümler için okumaya devam edin.
Şuna ekle vimrc:
au CursorHold,CursorHoldI * checktime
Varsayılan olarak, CursorHold imleç 4 saniye boyunca hareketsiz kalır ve üzeri yapılandırılabilir sonra tetiklenir updatetime .
Tamponu vim içindeyken değiştirirken vimrctetiklemek için aşağıdakini ekleyin :autoread
au FocusGained,BufEnter * :checktime
Sahip olmak FocusGainedyüklemek eklentisi bir terminal emülatörü (Xterm, tmux, vs) içindeki düz vim çalışmalarını (yukarıya bakınız):
vim-tmux odaklama-olayları
Tmux> 1.9 sürümlerinde, şunu eklemeniz gerekir .tmux.conf:
set -g focus-events on
autoreadTetikleyiciler de mümkün olduğunda bildirimler .
İşte benim olan vimrcher şeyden uygulamak hatları:
" Triger `autoread` when files changes on disk
" https://unix.stackexchange.com/questions/149209/refresh-changed-content-of-file-opened-in-vim/383044#383044
" https://vi.stackexchange.com/questions/13692/prevent-focusgained-autocmd-running-in-command-line-editing-mode
autocmd FocusGained,BufEnter,CursorHold,CursorHoldI * if mode() != 'c' | checktime | endif
" Notification after file change
" https://vi.stackexchange.com/questions/13091/autocmd-event-for-autoread
autocmd FileChangedShellPost *
\ echohl WarningMsg | echo "File changed on disk. Buffer reloaded." | echohl None
Beni doğru yöne yönlendirdiğiau CursorHold için ErichBSchulz'a teşekkürler .