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:
:edit
Geç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 :edit
ile kısaltılabilir :e
. Kuvvet düzenleme böylece yapılabilir:e!
:e!
.
:edit
ve :edit!
kullanabileceğiniz :e
ve :e!
sırasıyla.
u
baş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 pull
ekranda kaydedilmemiş değişikliklerinizi istemeden kaybedebilirsiniz.
gvim
Harici komutları kullanmanız veya çalıştırmanız gerekir.
:checktime
Hayatınızı daha iyi hale getirmek için eklenecek satırların Wrap-up
baş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 (
!ls
veya!sh
benzeri) 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 vimrc
tetiklemek için aşağıdakini ekleyin :autoread
au FocusGained,BufEnter * :checktime
Sahip olmak FocusGained
yü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
autoread
Tetikleyiciler de mümkün olduğunda bildirimler .
İşte benim olan vimrc
her ş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 .