Bisakah saya membagikan riwayat perintah Vim di seluruh instance secara langsung?
Maksud saya apa yang dilakukan orang dalam bash dengan cara ini:
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
Yaitu, ketika saya menjalankan perintah echo test1
dalam satu shell, dan kemudian menekan yang Uplain, saya mengerti echo test1
. (Tepatnya, seseorang harus menekan Entersebelumnya Upagar bisa berfungsi.)
Apakah ini mungkin dengan Vim? Awalnya saya pikir menggunakan +clientserver
opsi akan berhasil. Tapi itu sepertinya menjadi sesuatu yang lain.
command-history
x-yuri
sumber
sumber
Jawaban:
Riwayat perintah disimpan dalam file viminfo (
:help viminfo
). Biasanya itu dibaca saat startup dan ditulis saat keluar, tetapi Anda bisa secara eksplisit bertahan dan menyinkronkan antara instance Vim dengan kombinasi:wviminfo
dan:rviminfo
. Perhatikan bahwa ini akan menyinkronkan seluruh informasi; yaitu juga mendaftarkan konten, tanda, daftar buffer, dll.sumber
Di Vim yang paling dekat yang bisa Anda dapatkan adalah (seperti jawaban Ingo dan komentar Christian disebutkan) adalah:
Sangat penting untuk menyadari bahwa perintah otomatis
Focus*
tidak selalu berjalan ketika Anda menggunakan Vim dari terminal, terutama jika Anda menggunakan tmux atau layar. Anda harus menguji ini dulu dengan menggunakan:au FocusLost :echoerr "Focus lost!"
.Sejauh yang saya tahu tidak ada solusi yang baik jika autocommand ini tidak bekerja untuk Anda. Menggunakan acara lain (seperti
CursorHold
) tampaknya bermasalah bagi saya karena masalah waktu yang hampir pasti akan muncul.Neovim hadir dengan "ShaDa", yang merupakan pengganti sistem viminfo Vim. Salah satu aspek yang lebih baik adalah menggabungkan file dari berbagai instance, dan meskipun tidak secara langsung mendukung sinkronisasi antara beberapa instance ( belum ), ini tampaknya bekerja dengan baik untuk setidaknya satu pengembang Neovim :
Lihat
:help shada-merging
detail tentang proses penggabungan.sumber
:h viminfo-timestamp