Saya tahu bahwa Vim memungkinkan mode server klien ( :h clientserver
): dimungkinkan untuk mengubahnya menjadi server yang akan mendapatkan beberapa perintah dan menjalankannya dan sebagai klien yang akan mengirim perintah ke server.
Saya mengerti cara kerjanya, tetapi saya tidak bisa membayangkan penggunaan praktis dari fitur ini: dalam hal apa berguna, dan alur kerja apa yang dapat dibuat menggunakan fitur ini?
Jadi pertanyaan saya sederhana: Apa gunanya mode server klien Vim?
(Saya tunjukkan lagi bahwa pertanyaan saya bukan tentang bagaimana membuatnya bekerja atau bagaimana kerjanya tetapi mengapa menggunakannya.)
clientserver
statox
sumber
sumber
Jawaban:
Sebelum fitur saluran / pekerjaan terbaru dari Vim 7.4, fitur client-server adalah satu-satunya cara untuk melakukan kompilasi latar belakang yang layak - tanpa ketergantungan pada Python. Kami memulai kompilasi sebagai pekerjaan latar belakang, dan ketika selesai, ia memberitahukan kembali ke vim, berkat saluran client-server, bahwa ia telah selesai.
Ini juga secara tidak langsung digunakan oleh "plugins" seperti pyclewn untuk mengintegrasikan debugger ke vim. Sebenarnya pyclewn menggunakan fitur + netbeans (yang dibangun di atas + clienterver). Proyek penting lainnya menggunakan antarmuka netbeans ini untuk mengintegrasikan vim dengan IDE - lihat
:h netbeans-intro
.Ini juga digunakan oleh beberapa plugin tes seperti vimrunner untuk menjalankan tes di Vim dari baris perintah. Saya menggunakannya untuk menguji plugin saya di Travis.
Saya juga ingat menyinkronkan klik saya di antarmuka xdvi ke kode sumber LaTeX saya berkat + clientserver.
sumber
Penggunaan saya terhadap hal ini sedikit lebih sederhana (dan mungkin biasa) daripada Luc Hermitte.
Jika Anda memulai instance gvim dengan ini dikompilasi dalam (dan itu, dan telah lama, pada, misalnya, distro linux besar seperti Fedora dan Debian), itu dimulai dalam mode server. Saya menekankan "gvim" karena apa yang akan saya uraikan tampaknya tidak berlaku untuk
vim
instance tunggal di terminal GUI (walaupun saya kira itu bisa terjadi jika Anda menggunakan paramater dengan tepat).Bagaimanapun, Anda kemudian dapat membuka file dari mana saja dalam instance gvim dengan
gvim --remote [file path]
(tanpa--servername
ditentukan). Saya penggemar ini karena saya tidak menavigasi sistem file secara langsung dengan vim; sebaliknya saya menggunakan browser file ortodoks (komandan tengah malam) - atau lebih tepatnya, tumpukan mereka terbuka ke lokasi yang berbeda karenamc
ringan dan memungkinkan untuk berbagai skema warna kulit untuk menyederhanakan membedakan di antara mereka (jadi saya cenderung memiliki dua atau tiga terbuka secara terpisah tab di setidaknya satu terminal GUI). Namun, saya pikir prinsip yang sama akan berlaku untuk semua peramban file yang memungkinkan Anda beberapa bentuk hotkey khusus yang dapat Anda asosiasikangvim --remote %f
. Dimc
I memilikinya di menu pengguna, jadi F2 + e dan file yang disorot / dipilih dikirim ke instance gvim.Ini menjadi sedikit lebih baik: Jika Anda membuka instance gvim kedua , katakanlah, pada monitor # 2 dari desktop yang sama, atau desktop yang terpisah, dan mungkin skema warna yang berbeda di dalamnya, dan kali ini berikan secara eksplisit
--servername foo
, Anda dapat mengirim file ke instance itu dengan:Sesuatu yang mungkin berguna atau tidak berguna tergantung pada ruang lingkup apa yang Anda lakukan, dll.
sumber
less
, yang instan dan satu kunci untuk keluar) dan mungkin mengirimnya ke aplikasi selain vim yang juga memiliki mode jarak jauh seperti ini (banyak hal dilakukan sekarang, termasuk "editor" lain yang kadang-kadang saya gunakan untuk membiarkan tab header yang ditumpuk untuk dilihat, dan juga browser web) . Dengan kata lain, saya akan mengatakan menavigasi fs dengan vim sepertinya bekerja untuk tidak menggunakanmc
dan--remote
Pengembangan tertanam. Banyak kali dalam pengembangan tertanam Anda memiliki soket IP, tetapi ruang hard drive lokal terbatas, atau tidak ada memori yang tidak mudah menguap, atau sejumlah hal lainnya. Anda dapat memulai server pada papan yang disematkan, dan kemudian memasangnya di komputer pengembangan Anda dan mengatur semua konfigurasi dan tag Anda secara lokal.
sumber
Saya menulis tesis master saya menggunakan Vim, LaTeX dan BibTeX. Untuk mengelola referensi BibTeX saya, saya menggunakan program yang disebut JabRef . JabRef memiliki fitur kecil yang rapi di mana Anda dapat menghubungkannya ke instance server Vim, dan kemudian Anda dapat "mendorong" referensi BibTeX dari JabRef ke dokumen LaTeX yang sedang Anda edit di Vim.
sumber
Alur kerja saya mirip dengan apa yang dikatakan goldilocks dalam jawabannya. Saya menggunakan
:terminal
fitur vim8 dalam kombinasi dengan--remote
opsi. Saya mempertahankan 2 tata letak jendela di vim. Kode di jendela kiri dan terminal di sebelah kanan. Saya menggunakan jendela kanan (terminal) untuk menjalankan kompilasi, menavigasi sistem file dan membuka file dalam instance vim saat ini (dari terminal). Aliran ini memungkinkan saya untuk beroperasi dengan keterlibatan mouse yang sangat sedikit.Saya menggunakan gvim dan icewm (manajer jendela mana pun harus melakukannya)
Mulai turunan gvim
Di dalam gvim, buka terminal secara vertikal
Di jendela terminal terbelah
Anda dapat membuat alias untuk perintah panjang ini di .zshrc / .bashrc Anda dan mempersingkatnya sesuai keinginan Anda.
Dengan alur kerja ini, saya jarang keluar dari instance gvim saya dan jarang menggunakan mouse.
sumber