क्लाइंट-सर्वर मोड के व्यावहारिक उपयोग क्या हैं?


23

मुझे पता है कि विम एक क्लाइंट सर्वर मोड ( :h clientserver) की अनुमति देता है : इसे सर्वर में बदलना संभव है जो कुछ कमांड प्राप्त करेगा और उन्हें निष्पादित करेगा और क्लाइंट के रूप में जो सर्वर को कमांड भेजेगा।

मुझे लगता है कि यह कैसे काम करता है, लेकिन मैं इस सुविधा के व्यावहारिक उपयोग की कल्पना नहीं कर सकता: किन मामलों में यह उपयोगी है, और इस सुविधा का उपयोग करके क्या वर्कफ़्लो बनाया जा सकता है?

इसलिए मेरा प्रश्न सरल है: विम के क्लाइंट सर्वर मोड का उपयोग क्या है?

(मैं फिर से इंगित करता हूं कि मेरा सवाल यह नहीं है कि इसे कैसे काम करना है या यह कैसे काम करता है लेकिन इसका उपयोग क्यों करें।)



2
मैं इसे बहुत व्यापक के रूप में बंद करने के लिए इच्छुक हूं।
मुरु

3
मैं समापन को बहुत व्यापक समझूंगा। एसई शायद इस सवाल का सबसे अनुकूलित मंच नहीं है, लेकिन मुझे लगता है कि मैं इस सुविधा के बारे में कुछ याद कर रहा हूं, इसलिए मुझे लगा कि अन्य इन उत्तरों का लाभ उठा सकते हैं।
statox

जवाबों:


21
  • Vim 7.4 के चैनल / जॉब की हालिया सुविधा से पहले, क्लाइंट-सर्वर फीचर एक अच्छी पृष्ठभूमि संकलन करने का एकमात्र तरीका था - पायथन पर किसी भी निर्भरता के बिना। हम एक पृष्ठभूमि नौकरी के रूप में संकलन शुरू करते हैं, और जब यह पूरा हो जाता है, तो यह क्लाइंट-सर्वर चैनल के लिए धन्यवाद वापस विम को सूचित करता है, कि यह समाप्त हो गया है।

  • यह परोक्ष रूप से "प्लगइन्स" द्वारा उपयोग किया जाता है जैसे कि पाइब्न को डिबगर को विम में एकीकृत करने के लिए। वास्तव में pyclewn + netbeans फीचर का उपयोग करता है (जो कि + क्लाइंटसेवर के ऊपर बनाया गया है)। अन्य उल्लेखनीय परियोजनाएं इस netbeans इंटरफ़ेस का उपयोग IDE - देखने के साथ विम को एकीकृत करने के लिए करती हैं :h netbeans-intro

  • इसका उपयोग कुछ परीक्षण प्लगइन्स द्वारा भी किया जाता है जैसे vimrunner कमांड लाइन से विम में परीक्षण चलाने के लिए। मैं इसका उपयोग ट्रैविस पर अपने प्लगइन्स का परीक्षण करने के लिए करता हूं।

  • मुझे यह भी याद है कि मेरे क्लिक्स को xdvi इंटरफ़ेस में मेरे LaTeX सोर्स कोड + क्लाइंटसेवर की बदौलत सिंक्रोनाइज़ करना है।


1
इसलिए इसका उपयोग उपयोगकर्ता द्वारा सीधे नहीं बल्कि थर्ड पार्टी एप्लिकेशन द्वारा किया जाना उपयोगी है। आपके उत्तर के लिए धन्यवाद जो बहुत दिलचस्प है।
statox

4
@ स्टाटॉक्स हाँ। यह मुख्य उपयोग के मामले हैं जिन्हें मैं देखता हूं: बाहरी उपकरणों के साथ सरल एकीकरण। सरल क्योंकि हम कमांड लाइन के माध्यम से vim कमांड और फ़ंक्शंस को फीड कर सकते हैं।
ल्यूक हरमिट

1
एक्लिम इसका एक और उदाहरण है।
गोल्डीलॉक्स

13

मेरा यह प्रयोग ल्यूक हरमिट के मुकाबले थोड़ा अधिक सरलीकृत (और शायद सामान्य) है।

यदि आप इसमें संकलित (और यह है, और लंबे समय से, उदाहरण के लिए, फेडोरा और डेबियन जैसे प्रमुख लिनक्स डिस्ट्रोस) के साथ जीवीएम का एक उदाहरण शुरू करते हैं , तो यह सर्वर मोड में शुरू होता है। मैंने "गविम" पर जोर दिया क्योंकि जो मैं वर्णन करने वाला vimहूं वह जीयूआई टर्मिनल में एक विलक्षण उदाहरण पर लागू नहीं होता है (हालांकि मुझे लगता है कि यदि आप उचित रूप से पैरामाटर का उपयोग करते हैं तो यह हो सकता है)।

फिर भी, आप किसी भी फ़ाइल को उस gvim उदाहरण में कहीं से भी gvim --remote [file path](बिना किसी --servernameनिर्दिष्ट के) खोल सकते हैं । मैं इसका एक प्रशंसक हूं क्योंकि मैं फ़ाइल सिस्टम को सीधे vim के साथ नेविगेट नहीं करता हूं; इसके बजाय मैं एक रूढ़िवादी फ़ाइल ब्राउज़र (आधी रात कमांडर) का उपयोग करता हूं - या बल्कि, उनमें से ढेर अलग-अलग स्थानों के लिए खुले हैं क्योंकि mcहल्का है और विभिन्न रंग योजना की खाल के बीच अंतर को सरल बनाने की अनुमति देता है (इसलिए मुझे दो या तीन अलग-अलग खुले हैं कम से कम एक जीयूआई टर्मिनल में टैब)। हालांकि, मुझे लगता है कि वही सिद्धांत किसी भी फ़ाइल ब्राउज़र पर लागू होगा जो आपको अनुकूलित हॉटकी के कुछ रूप की अनुमति देता है जिसे आप साथ जोड़ सकते हैं gvim --remote %fmcउपयोगकर्ता मेनू में मेरे पास है, इसलिए F2 + e और हाइलाइट की गई / चयनित फ़ाइल gvim इंस्टेंस पर भेजी जाती है।

यह थोड़ा बेहतर हो जाता है: यदि आप एक दूसरे gvim उदाहरण को खोलते हैं , तो कहें, एक ही डेस्कटॉप के मॉनिटर # 2 पर, या एक अलग डेस्कटॉप, और शायद एक में एक अलग colorcheme, और इस बार इसे एक स्पष्ट रूप से दें --servername foo, आप भेज सकते हैं इसके बजाय उस उदाहरण के लिए फ़ाइलें:

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

जो कुछ आप कर रहे हैं उसके दायरे के आधार पर कुछ जो काम में आ भी सकता है और नहीं भी।


यह एक ऐसा मामला है जिसकी मैंने परिकल्पना नहीं की थी लेकिन वास्तव में यदि आप विम से अपनी फ़ाइलों के माध्यम से नेविगेट करना पसंद नहीं करते हैं तो यह एक अच्छा समाधान हो सकता है।
statox

ठीक है, मैं इसे एक "काम के आसपास" नहीं मानूंगा क्योंकि मैं जो दूसरी चीज कर रहा हूं, न्यूनतम रूप से, एक ही समय में फ़ाइल ब्राउज़र के साथ एक ही स्थान पर फ़ाइलों पर नज़र रख रहा है (पाठ के माध्यम से less, जो तात्कालिक और एक है बाहर निकलने की कुंजी) और संभवतः उन्हें विम के अलावा अन्य अनुप्रयोगों में भेजना, जिनके पास एक रिमोट मोड भी है (इस तरह की कई चीजें अब, अन्य "संपादकों" सहित, जिन्हें मैं कभी-कभी देखने के लिए हेडर के स्टैक्ड टैब छोड़ने के लिए उपयोग करता हूं, और वेब ब्राउज़र भी) । एक और रास्ता रखो, मैं कहूँगा कि mc--remote
vs के

1
हाँ अपने आप में एक कार्यप्रवाह और नहीं एक समाधान है कि, मेरे शब्दों आदर्श नहीं था, लेकिन मैं अपने जवाब की ;-) विचार समझ में आ
statox

1
विजुअल स्टूडियो के साथ काम करते समय, मैं अपना अधिकांश संपादन विम में करता हूं। मैं एक कीस्ट्रोक पर वर्तमान फ़ाइल (उसी स्थान में कर्सर के साथ) को खोलने के लिए इस सुविधा का उपयोग करता हूं। यह कैसे सेट अप करने के लिए Visual Studio Vim Tips पृष्ठ के साथ एकीकृत gimim पर बाहरी टूल सेक्शन के रूप में Vim देखें ।
अमीर

5

एंबेडेड डेवलपमेंट। एम्बेडेड विकास में बहुत बार आपके पास एक आईपी सॉकेट है, लेकिन सीमित स्थानीय हार्ड ड्राइव स्थान, या कोई गैर-वाष्पशील मेमोरी, या किसी भी अन्य चीजों की संख्या नहीं है। आप एम्बेडेड बोर्ड पर एक सर्वर शुरू कर सकते हैं, और फिर अपने विकास के कंप्यूटर पर क्लाइंट कर सकते हैं और स्थानीय रूप से आपके सभी कॉन्फ़िगरेशन और टैग सेटअप कर सकते हैं।


1

मैंने Vim, LaTeX और BibTeX का उपयोग करके अपने मास्टर्स थीसिस को लिखा। मेरे BibTeX संदर्भों को प्रबंधित करने के लिए, मैंने JabRef नामक एक कार्यक्रम का उपयोग किया । JabRef में एक छोटा सा फ़ीचर है जहाँ आप इसे Vim सर्वर इंस्टेंस से जोड़ सकते हैं, और फिर आप JabRef से LaTeX डॉक्यूमेंट में BibTeX रेफरेंस को "पुश" कर सकते हैं जिसे आप Vim में एडिट कर रहे हैं।


1

मेरे वर्कफ़्लो के समान है जो गोल्डिलॉक्स ने अपने उत्तर में कहा था। मैं विकल्प के :terminalसाथ संयोजन में vim8 की सुविधा का उपयोग करता हूं --remote। मैं vim में 2 विंडो लेआउट बनाए रखता हूं। बाईं विंडो में कोड और दाईं ओर टर्मिनल। मैं संकलनों को चलाने के लिए सही विंडो (टर्मिनल) का उपयोग करता हूं, फ़ाइल सिस्टम को नेविगेट करता हूं और वर्तमान विम उदाहरण में (टर्मिनल से) फाइलें खोलता हूं। यह प्रवाह मुझे बहुत कम माउस भागीदारी के साथ संचालित करने की अनुमति देता है।

मैं gvim और icewm का उपयोग करता हूं (किसी भी विंडो प्रबंधक को करना चाहिए)

एक gvim उदाहरण शुरू करें

gvim somefile

अंदर gvim, ऊर्ध्वाधर विभाजन में खुला टर्मिनल

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

टर्मिनल विंडो में विभाजित

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 में इन लंबी कमांड के लिए उपनाम बना सकते हैं और उन्हें अपनी पसंद के हिसाब से छोटा कर सकते हैं।

इस वर्कफ़्लो के साथ, मैं शायद ही कभी अपने जीवीएम उदाहरण से बाहर निकलता हूं और शायद ही कभी माउस का उपयोग करता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.