Saya memiliki masalah dalam melihat isi file, memperbarui file secara eksternal, menampilkan file yang diubah dan memiliki opsi untuk mengeditnya saat diperlukan. Saya menyelesaikannya dengan opsi server Vim / baris perintah jarak jauh, terinspirasi oleh jawaban ini .
Dengan perintah berikut, file dapat dimuat ulang melalui perintah eksternal. Pertama, buka file yang dimaksud dengan Vim, sambil memulai contoh server.
vim --servername JABBERWOCKY /tmp/alice.log
Mari kita asumsikan file telah diubah secara eksternal, misalnya oleh a echo "Curiouser and curiouser" >> /tmp/alice.log
. Bila perlu, kirim perintah ke instance server untuk memuat ulang file. Perintah ini akan selesai dengan cepat dan tidak menelurkan editor baru.
vim --servername JABBERWOCKY --remote-send ":e<CR>"
Jika file yang dibuka diubah dalam Vim dan secara eksternal, akan ada konflik saat memuat ulang (pesan peringatan akan muncul). Untuk itu keputusan harus dibuat: Biarkan saja dan simpan perubahan di Vim, atau buang perubahan lokal dan paksa muat ulang .
Perintah di --remote-send
atas membutuhkan pemuatan manual. Namun, perintah itu dapat diikat ke loop sederhana, menggunakan Bash's for
/ while
, atau menggunakan one-liner yang rusak di Linux / Unix:
watch -n 1 'vim --servername JABBERWOCKY --remote-send ":e<CR>"'
Meskipun tidak diuji, saya yakin sesuatu seperti ini dapat direalisasikan di PowerShell juga.
Di Linux / Unix pendekatan yang digerakkan oleh peristiwa dapat diwujudkan dengan mendengarkan acara sistem file menggunakan misalnya perpustakaan inotify , jika Anda tidak menggunakan sistem file yang terlalu gila. Secara pribadi saya suka menggunakan alat entr banyak, yang tampaknya termasuk dalam distribusi Linux utama. Lalu saya mendapatkan:
echo /tmp/alice.log | entr vim --servername JABBERWOCKY --remote-send ":e<CR>"
" Compare buffer with saved version
nnoremap gd :DiffSaved<CR>