İstemci-sunucu kipinin pratik kullanımları nelerdir?


23

Vim'in bir istemci sunucu kipine izin verdiğini biliyorum ( :h clientserver): bazı komutları alacak ve bunları yürütecek bir sunucuya dönüştürmek ve komutları sunucuya gönderecek bir istemci olarak kullanmak mümkündür.

Nasıl çalıştığını anlıyorum ama bu özelliğin pratik bir kullanımını hayal edemiyorum: hangi durumlarda faydalıdır ve bu özelliği kullanarak hangi iş akışını oluşturabilirsiniz?

Yani benim sorum basit: Vim istemci sunucu modunun kullanımı nedir?

(Tekrar söylüyorum, sorumun nasıl çalışacağına ya da nasıl işe yaradığına değil neden kullandığına dair.)



2
Bunu çok geniş olarak kapatmaya meyilliyim.
muru

3
Kapanışı çok geniş anlardım. SE belki de bu soruya en iyi adapte edilmiş platform değil ama bu özellik hakkında bir şeyleri özlüyorum, bu yüzden diğerlerinin bu yanıtlardan yararlanabileceğini düşündüm.
statox

Yanıtlar:


21
  • Kanal / iş Vim 7.4'ün en son özelliğinden önce, istemci-sunucu özelliği, Python'a herhangi bir bağımlılık olmadan düzgün bir arka plan derlemesi yapmanın tek yoluydu. Derlemeye bir arka plan işi olarak başlıyoruz ve bittiğinde, istemci-sunucu kanalı sayesinde bittiği için tekrar vim'e haber veriyor.

  • Aynı zamanda dolaylı olarak, hata ayıklayıcısını vim'e entegre etmek için, pyclewn gibi "eklentiler" tarafından kullanılır. Aslında pyclewn + netbeans özelliğini kullanır (bu, + müşteri sunucusunun üstüne inşa edilmiştir). Diğer kayda değer projeler, vim'i bir IDE ile entegre etmek için bu netbeans arayüzünü kullanır - bkz :h netbeans-intro.

  • Ayrıca, Vimrunner gibi bazı test eklentileri tarafından Vim'de komut satırından testler çalıştırmak için kullanılır. Eklentilerimi Travis'te test etmek için kullanıyorum.

  • Ayrıca xdvi arayüzündeki tıklamalarımı + istemcileri sayesinde LaTeX kaynak kodumla senkronize ettiğimi de hatırlıyorum.


1
Bu nedenle, kullanıcı tarafından doğrudan değil, üçüncü parti uygulama tarafından kullanılmaması faydalıdır. Cevabınız için oldukça ilginç bir cevap.
statox

4
@statox Evet. Gördüğüm ana kullanım durumları: harici araçlarla basit entegrasyon. Basit çünkü vim komutlarını ve fonksiyonlarını komut satırından besleyebiliriz.
Luc Hermitte

1
Eclim buna başka bir örnek.
goldilocks

13

Bunu kullanmam, Luc Hermitte'den biraz daha basit (ve belki de sıradan).

Bunun içinde derlenmiş bir gvim örneği başlatırsanız (ve uzun süredir, örneğin, Fedora ve Debian gibi ana linux dağıtımları), sunucu modunda başlar. “Gvim” i vurguladım çünkü tarif edeceğim şey vimbir GUI terminalindeki tekil bir örneğe uygulanmıyor gibi gözüküyor (paramater'i uygun şekilde kullanıyor olsanız bile, sanırım).

Neyse, daha sonra bu gvim örneğinin herhangi bir yerindeki herhangi bir dosyayı gvim --remote [file path]( --servernamebelirtilmemiş) ile açabilirsiniz . Bunun hayranıyım çünkü dosya sisteminde doğrudan vim ile gezmiyorum; bunun yerine ortodoks bir dosya tarayıcısı kullanıyorum (gece yarısı komutanı) - daha doğrusu, mchafif oldukları için farklı konumlara açık yığınlar ve çeşitli renk düzeni kaplamalarının aralarında farklılaşmayı basitleştirmelerini sağlar (böylece iki veya üç ayrı ayrı açık olma eğilimindeyim) en az bir GUI terminalinde sekmeler). Ancak, aynı ilkenin, ilişkilendirebileceğiniz bazı özelleştirilmiş kısayol tuşları sağlayan herhangi bir dosya tarayıcısına da uygulanacağını düşünüyorum gvim --remote %f. In mcben kullanıcı menüde var, bu yüzden F2 + e ve vurgulanan / seçili dosya gvim örneğine gönderilir.

Bu biraz daha iyi olur: Örneğin, aynı masaüstünün # 2 numaralı monitöründe veya ayrı bir masaüstünde ikinci bir gvim örneği açarsanız , belki de bir tanesinde farklı bir renk düzeni düzenlerseniz, bu sefer onu açık bir şekilde --servername foobelirtebilirsiniz. bunun yerine bu örneğe dosya:

 gvim --servername foo --remote [file path]

Yaptığınız şeyin kapsamına bağlı olarak kullanışlı olabilecek veya bulunmayacak olan bir şey.


Bu, benim öngörmediğim bir kullanım durumu ama gerçekten de Vim'deki dosyalarınız arasında gezinmeyi sevmiyorsanız, bu iyi bir geçici çözüm olabilir.
statox

Eh, ben bir "çalışmak" düşünmezdim, çünkü yaptığım diğer şey, minimal olarak, aynı anda dosya tarayıcısıyla aynı konumlardaki dosyalara göz atıyor (metin üzerinden less, anında ve bir çıkmak için anahtar) ve muhtemelen onları da böyle bir uzak kipte bulunan vim dışındaki uygulamalara gönderme (bazen görüntülemek için bazen üst üste yığılmış sekmelerden ve web tarayıcılarından ayrılmak için kullandığım diğer "editörler" dahil) . Başka bir deyişle, ben vim kullanmayan için geçici bir çözüm gibi görünüyor ile fs gezinmeye söyleyebilirim mcve --remote;)
goldilocks

1
Yup bu kendi başına bir iş akışı ve geçici bir çözüm değil, ifadem ideal değildi ama cevabınızın fikrini anladım ;-)
ifadem

1
Visual Studio ile çalışırken Vim'deki düzenlemelerimin çoğunu yapıyorum. Geçerli özelliği (imleç aynı konumdayken) bir tuş vuruşunda açmak için bu özelliği kullanıyorum. Bkz harici bir araç olarak Vim bölümünde Visual Studio ile entegre gvim bu nasıl kurulacağı için Vim ipuçları sayfası.
Zengin

5

Gömülü gelişim Gömülü geliştirmede çoğu zaman bir IP soketiniz var, ancak sınırlı bir yerel sabit sürücü alanı var ya da geçici olmayan bir hafıza ya da başka herhangi bir şey yok. Gömülü anakartta bir sunucu başlatabilir ve ardından geliştirme bilgisayarınızda onu çalıştırabilir ve tüm yapılandırmanızın ve etiketlerin yerel olarak kurulmasını sağlayabilirsiniz.


1

Yüksek lisans tezi Vim, LaTeX ve BibTeX kullanarak yazdım. BibTeX referanslarımı yönetmek için JabRef adlı bir program kullandım . JabRef'in Vim sunucu örneğine bağlayabileceğiniz küçük bir özelliği vardır ve ardından BibTeX referansını JabRef'ten Vim'de düzenlediğiniz LaTeX belgesine "itebilirsiniz".


1

İş akışım goldlock'lara benziyor cevabında . Vim8'in :terminalözelliğini --remoteseçenek ile birlikte kullanıyorum . 2 pencere düzenini vim olarak tutuyorum. Sol penceredeki kod ve sağdaki terminal. Derlemeleri çalıştırmak, dosya sisteminde gezinmek ve dosyaları geçerli vim örneğinde (terminalden) açmak için sağ pencereyi (terminal) kullanıyorum. Bu akış çok daha az fare tutulumu ile çalışmamı sağlıyor.

Ben gvim ve icewm kullanıyorum (herhangi bir pencere yöneticisi yapmalı)

Bir gvim örneği başlat

gvim somefile

Gvim'in içinde terminali dikey olarak açın

:botright vertical terminal
(or) short form
:bo vert term 
"botright" splits the window to right

Terminal penceresinde bölünmüş

gvim --remote-send '<C-w><C-w>' --remote anotherfile

"--remote-send" will send Ctrl-W Ctrl-W to remote gvim instance(in our case, current instance) 
to put the cursor in the left window. Otherwise, the terminal split would be replaced by
'anotherfile' buffer.
"--remote" will open 'anotherfile' in left window.

.Zshrc / .bashrc'nizde bu uzun komutlara takma adlar oluşturabilir ve bunları istediğiniz gibi kısaltabilirsiniz.

Bu iş akışı ile nadiren gvim örneğimin dışına çıkar ve nadiren fareyi kullanırım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.