Vim में वर्तमान स्थान पर सिस्टम कमांड का आउटपुट डालें


33

विम में, जब मैं उपयोग करता हूं

:r !ls somefilename

यह वर्तमान लाइन के नीचे एक नई लाइन पर उस कमांड के आउटपुट को सम्मिलित करता है।

यदि मैं करता हूँ

let @a = system("ls")

और बादमें

"ap

यह अभी भी वर्तमान लाइन के नीचे एक नई लाइन पर आउटपुट सम्मिलित करता है।

क्या वर्तमान स्थान पर विम इंसर्ट आउटपुट बनाने का कोई तरीका है?


जवाबों:


14

आप Ctrl-R * वर्णों के बीच क्लिपबोर्ड बफर की सामग्री को इन्सर्ट मोड (और अन्य बफ़र्स के लिए एक समान दृष्टिकोण) के साथ पेस्ट कर सकते हैं। इसलिए यदि आप सिस्टम कमांड को बफर में प्राप्त कर सकते हैं, तो आपको सेट किया जाना चाहिए। (स्रोत: https://stackoverflow.com/questions/1491135/paste-multi-line-string-into-gvim-at-cursor-position )।

:let @a=system("ls -l")ls -lरजिस्टर में आउटपुट डालेंगे a। फिर आप इसे (इंसर्ट मोड में) पेस्ट कर सकते हैं ^R-a


इसके अलावा, अधिकांश प्लेटफार्मों पर क्लिपबोर्ड एक रजिस्टर (आमतौर पर *) के साथ समन्वयित होता है इसलिए यदि आप अपने कमांड आउटपुट को अपने क्लिपबोर्ड पर पाइप करते हैं तो यह आपके "*उपयोग के लिए होगा।
ब्रूनो ब्रोंस्की

39
:r !command 

कमांड से आउटपुट को पढ़ेगा और इसे मौजूदा लाइन के नीचे लाइन में डालेगा। इस तरह vi को प्रोग्राम किया जाता है आप व्यवहार को बदल नहीं सकते हैं।

लेकिन कहते हैं कि यदि आप पंक्ति संख्या 3 में हैं। यदि आप प्रयास करते हैं :r !date। यह दिनांक मान को पंक्ति संख्या 4 में सम्मिलित करेगा।

यदि आप चाहते हैं कि दिनांक मान पंक्ति संख्या 3 पर दिखाई दे, तो आप :2r !dateपंक्ति संख्या 3 में दिनांक मान सम्मिलित करने का प्रयास करेंगे।


4
वह एक अलग लाइन पर सम्मिलित होता है, लेकिन फिर भी अपनी स्वयं की एक पंक्ति पर। मैं इसे वर्तमान स्थान पर सम्मिलित करना चाहता हूं!
deshmukh

13

यहां कर्सर से पहले बाहरी कमांड से आउटपुट चिपकाने का वैकल्पिक तरीका है:

:exe 'norm i' . system("ls -l")

या अभिव्यक्ति रजिस्टर का उपयोग करें ( :help @=):

"=system('ls -la')

फिर मारा P। या इससे छोटा रास्ता:

<CTRL-R>=system('ls -la')<CR>

4
यह उत्तर है।
जैकब

1
माना! यह वास्तव में सही उत्तर होना चाहिए, क्योंकि इसमें एक अधिक प्रोग्रामेटिक समाधान (साथ :exe) शामिल है जिसे कमांड में शामिल किया जा सकता है।
मेटासोयर्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.