विम में, कमांड-लाइन से आउटपुट हथियाने का एक सुंदर तरीका क्या है?


14

यदि मैं विम में हूं और कमांड-लाइन से कुछ आउटपुट प्राप्त करना चाहता हूं और इसे अपनी वर्तमान फाइल से निपटना चाहता हूं, तो मैं इसे चला सकता हूं:

:! echo "foo" >> %

यह मेरी वर्तमान फ़ाइल में "फू" को जोड़ देगा, और मुझे फिर से लोड करना होगा।

क्या ऐसा करने का एक और अधिक सुरुचिपूर्ण तरीका है - क्या यह आउटपुट एक बफर में जाता है जिसे मैं उदाहरण के लिए पेस्ट कर सकता हूं?

जवाबों:


24

हाँ:

:r !echo "foo"

देख

:help :r!

जो वर्तमान लाइन के बाद कमांड का आउटपुट डालेगा। यदि आप कमांड आउटपुट को एक रजिस्टर में कैप्चर करना चाहते हैं जिसे आप पेस्ट कर सकते हैं, तो आप यह कर सकते हैं:

:let @a = system('echo "foo"')

अब कमांड का आउटपुट (ट्रेलिंग न्यूलाइन सहित) रजिस्टर में है a। देख

:help let-@
:help system()

सहायता और प्रयोग को देखने के बाद, मैं देखता हूं कि 1) :r"रीड" के लिए छोटा है (इसलिए आप 'रीड' या सिर्फ 'आर' टाइप कर सकते हैं और यह एक ही कमांड है), और 2) ऐसा :r path/to/foo.txtकरने की सामग्री सम्मिलित करेगा कर्सर के बाद फ़ाइल।
नाथन लॉन्ग

इसके अलावा - मैं systemकॉल के बारे में नहीं जानता था । वह तो कमाल है!
नाथन लॉन्ग

1
मुझे यह भी नहीं पता था कि आप मैन्युअल रूप से रजिस्टर सेट कर सकते हैं जैसे let @a = 'foo'। एक अच्छा विचार यह होगा कि खोज और प्रतिस्थापन करने के बाद, आप खोज शब्द को रजिस्टर में कहीं और चिपकाने के लिए रजिस्टर करने से बचा सकते हैं let @a = @/- "एक रजिस्टर बनाएं जिसमें / रजिस्टर शामिल हो, अर्थात् मेरी अंतिम खोज।"
नाथन लॉन्ग

1
@ नथन लोंग: आपका स्वागत है। / रजिस्टर से चिपकाने के अन्य तरीके हैं 1) :put /अगली सामग्री को रजिस्टर करने के लिए अगली पंक्ति में और 2) निष्पादित करें, जबकि सम्मिलित मोड में, Ctrl-R टाइप /करने के लिए कर्सर स्थिति पर रजिस्टर सामग्री सम्मिलित करें। उन पर अधिक के लिए, देखें :help :putऔर :help i_CTRL-R
गैरीजोन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.