Bir dosyanın içeriğine bakma, dosyayı harici olarak güncelleme, değiştirilen dosyayı görüntüleme ve gerektiğinde bunları düzenleme seçeneğim vardı. Bu cevaptan esinlenerek Vim server / uzak komut satırı seçenekleriyle çözdüm .
Aşağıdaki komutlarla bir dosya harici bir komutla yeniden yüklenebilir. İlk olarak, bir sunucu vakasını başlatırken söz konusu dosyayı Vim ile açın.
vim --servername JABBERWOCKY /tmp/alice.log
Dosyanın harici olarak değiştirildiğini varsayalım, örneğin a echo "Curiouser and curiouser" >> /tmp/alice.log
. Gerektiğinde, dosyayı yeniden yüklemek için sunucuya bir komut gönderin. Bu komut çabucak bitecek ve yeni bir editör ortaya çıkmayacak.
vim --servername JABBERWOCKY --remote-send ":e<CR>"
Açılan dosya Vim'de ve harici olarak değiştirilmişse, yeniden yükleme sırasında bir çakışma olacaktır (bir uyarı mesajı görünecektir). Bu durumda bir karar verilmelidir: Şununla bırakın ve Vim'deki değişiklikleri saklayın veya yerel değişiklikleri atın ve yeniden doldurmaya zorlayın .
Yukarıdaki komutun --remote-send
elle yeniden yüklenmesi gerekir. Bununla birlikte, bu komut basit bir döngüye, Bash'in for
/ while
kullanarak veya Linux / Unix'te tek bir liner kullanılarak bağlanabilir:
watch -n 1 'vim --servername JABBERWOCKY --remote-send ":e<CR>"'
Test edilmemiş olmasına rağmen, PowerShell'de de böyle bir şeyin gerçekleştirilebileceğinden eminim.
Linux / Unix'te , çok çılgın dosya sistemleri kullanmıyorsanız, örneğin inotify kütüphanesini kullanarak dosya sistemi olaylarını dinleyerek olaya dayalı bir yaklaşım gerçekleştirilebilir . Şahsen ben çok büyük Linux dağıtımlarında yer aldığı anlaşılan araç entr , çok seviyorum . Sonra anladım:
echo /tmp/alice.log | entr vim --servername JABBERWOCKY --remote-send ":e<CR>"
" Compare buffer with saved version
nnoremap gd :DiffSaved<CR>