Dari waktu ke waktu ketika mengerjakan beberapa proyek, dan / atau apa pun, itu membuat saya dengan (terlalu) banyak contoh Vim terbuka - seperti yang terjadi, saya membuka file yang sudah dibuka di tempat lain, memberi saya pilihan untuk:
[O]pen Read-only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort
Apakah ada beberapa cara untuk meningkatkan instance, seperti pada GUI / terminal, memegang file yang terbuka? Idealnya membawa file tersebut ke latar depan (jika banyak buffer).
Sampai sekarang saya menggunakan skrip bash yang mengekstrak PID dari swap, periksa apakah PID itu milik Vim, dan jika demikian gunakan wmctrl
untuk menaikkan jendela. Meskipun ini berfungsi dengan baik, setidaknya untuk GUI dan pada X11 Linux, saya bertanya apakah ada cara yang lebih asli.
Jawaban:
Salah satu solusinya adalah dengan menggunakan satu instance vim per proyek, yang akan mencegah masalah ini kecuali beberapa proyek Anda memiliki file yang tumpang tindih.
Saya akan berasumsi bahwa Anda mencari solusi otomatis, bukan saran untuk mengubah perilaku Anda.
Ada kemungkinan solusi lain di FocusLost yang lebih asli untuk vim.
Acara autocommand FocusLost berfungsi di GUI Vim, dan di beberapa terminal konsol. Anda bisa, alih-alih beralih ke file dalam versi vim yang terbuka (yang, jika Anda menggunakan banyak jendela gui berantakan), bertahan perubahan apa pun yang tidak ditulis dalam instance vim lainnya tidak hilang (a pisahkan git branch, simpan lalu undo jadi ada di pohon undo, atau simpan saja) dan buka di instance baru dengan indikasi dibuka sebelumnya.
Peristiwa autocommand yang berpotensi bermanfaat lainnya, tersedia dalam vim 7, adalah SwapExists , yang menunjukkan bahwa ada file swap untuk file tersebut, yaitu IE terbuka.
Jika Anda menyimpan semuanya dalam tmux atau layar, mungkin ada cara untuk beralih ke jendela / panel yang sesuai.
Pencarian github singkat juga memunculkan https://github.com/lynnard/editexisting.vim yang tampaknya berfungsi untuk pengelola jendela tertentu seperti Xmonad.
sumber
Lama hilang dan nyaris terlupakan.
Dimaksudkan untuk mem-re-faktor kode dll. Tetapi postingan apa adanya. Kode ini digunakan pada sistem 32-bit. Tidak yakin bagaimana kelakuannya pada 64-bit (atau lainnya).
Dapatkan hack di kode-C di suatu tempat juga, (mengekstraksi PID).
Biarkan sebagai pos bagi siapa saja untuk meretas dan mengubah. Script saya saat ini secara keseluruhan (menggunakan
pid
sebagai opsi itu harus bekerja pada GUI apa pun mengingat itu "GUI-PID / Program" dan penggunaanwmctrl -l -p
dan sebagainya):sumber