यदि आप चला रहे हैं, तो आप बाह्य रूप से आदेश भेज सकते हैं ...
विम सर्वर
उदाहरण के लिए, करना:
vim --servername vim
"vim" नाम के साथ एक सर्वर लॉन्च करने के लिए vim का कारण होगा। इसे दो बार कॉल करें और नए सर्वर को "vim1" कहा जाएगा, इसे तीन बार कॉल करें और यह "vim2" होगा, आदि। आप उस आदेश का एक उपनाम बनाना चाहते हैं।
विंडो टाइटल को देखकर आप जान सकते हैं कि किसी विशेष इंस्टेंस को किस सर्वर से नाम दिया गया है। जब आप देखते है:
[कोई नाम नहीं] + - VIM3
सर्वर नाम केस-असंवेदनशील है "VIM3" ("vim3" उसी के लिए संदर्भित होगा))। ध्यान दें कि यदि आप देखते हैं:
[नाम नहीं] + - वीआईएम
यह जरूरी नहीं कि इसका मतलब है कि इसे "VIM" नाम का एक सर्वर मिला है। आप यह सुनिश्चित कर सकते हैं कि सर्वर सर्वर नामों को सूचीबद्ध करके मौजूद है:
vim --serverlist
फिर भी, सवाल केवल "वीआईएम" के लिए उठता है, विशेष रूप से। यदि आप "GVIM" या किसी अन्य नाम को एक नंबर से जोड़कर देखते हैं, तो इसका मतलब है कि यह एक सर्वर है।
क्लाइंट का उपयोग कैसे करें
अब, अपने प्रश्न पर, आप सभी को बचा सकते हैं और किसी भी उदाहरण को देखते हुए छोड़ सकते हैं, जैसे:
vim --servername vim2 --remote-send $'\e:wqa\n'
यदि आप सम्मिलित या कमांड मोड में हैं, तो हम सामान्य मोड पर लौटने के लिए पलायन का उपयोग करते हैं। आप इसके अलावा कुछ भी कर सकते हैं :wqa
, लेकिन यह मेरे लिए सबसे उपयुक्त लगता है क्योंकि यह बफ़र्स के स्वैपफिल को छोड़ देगा जिसे बचाया नहीं जा सकता था (क्योंकि वे नए हैं और फ़ाइल नाम नहीं है, आदि)।
यदि आप अपने मामले में सभी उदाहरणों के लिए ऐसा करना चाहते हैं, तो आप बस सर्वर सूची के माध्यम से लूप कर सकते हैं:
for instance in $(vim --serverlist); do
vim --servername $instance --remote-send $'\e:wqa\n'
done
यदि किसी कारण से आप पसंद नहीं करते हैं --remote-send
, तो आप इसके बजाय इसका उपयोग कर सकते हैं --remote-expr
जिससे यह लाभ होता है कि यह ग्राहक को परिणाम या त्रुटि के कारण उत्पन्न करेगा, जैसे कि:
$ vim --servername vim2 --remote-expr 'execute("wqa")'
E141: No file name for buffer 1
ध्यान दें कि विम की सर्वर कार्यक्षमता का उपयोग करने के लिए यह आवश्यक है कि विम +clientserver
विकल्प के साथ बनाया गया था ।