2010-12-30 10 views
5

मैं कॉपी-पेस्ट बफर संपादित करने के लिए कोशिश कर रहा हूँ के उत्पादन प्राप्त करने के लिए:vimscript बफर पर्ल स्क्रिप्ट

मैं निम्न आदेश है:

nmap gfb :let .shellescape(getreg('0'))=1<br> 

कि बफर में नंबर 1 करने चाहिए थे , जो नहीं हो रहा है।

मैं एक पर्ची स्क्रिप्ट के आउटपुट को एक विस्क्रिप्टस्क्रिप्ट बफर में कैसे डालूं?

+0

बहुत प्रासंगिक: http://stackoverflow.com/questions/2471175/vim-replace-word-with-contents-of-paste-buffer @ "कॉपी-पेस्ट बफर है। –

उत्तर

2

रजिस्टर 0 अंदर 1 की दुकान करने के लिए:

:let @0 = 1 

ऐसा करने के लिए इस में vimscript के माध्यम से पर्ल:

:call Foo() 
+0

यह पूरी तरह से दिशा में है, लेकिन मुझे निम्न त्रुटि मिलती है: E319: क्षमा करें, कमांड इस संस्करण में उपलब्ध नहीं है: perl << EOF –

+0

e319 त्रुटि का समाधान करना था: sudo apt-shell खोल में vim-full इंस्टॉल करें। लेकिन अब चलो काम नहीं करते हैं। –

+0

बस स्पष्ट होने के लिए, अब आपके पास पर्ल समर्थन के साथ एक विम है, जिसका अर्थ है कि 'perl' और' doperl' आदेश अब आपके लिए उपलब्ध हैं। यह अन्य गैर-पर्ल सामग्री को नहीं बदलेगा। –

3

पाने के लिए:

function! Foo() 
perl << EOF 
    my $foo = 1; 
    VIM::DoCommand(':let @0 = ' . $foo); 
EOF 
endfunction 

तो फिर तुम कि समारोह कॉल कर सकते हैं एक वीम बफर में बाहरी कमांड का आउटपुट आप system का उपयोग करते हैं:

:let @0 = system("/bin/ls") 
:echo @0 

मुझे यकीन नहीं है कि यह बिल्कुल पर्ल से कैसे संबंधित है। आप स्पष्टीकरण के लिए अपना प्रश्न संपादित करना चाहेंगे।

+0

ओकी ताकि एक पर्ल स्क्रिप्ट के आउटपुट को प्राप्त करने के लिए मैं करूँ:: @ 0 = सिस्टम ('perl /home/hermann/hi.pl')? –

+0

ऐसा कुछ, हां। बेशक 'सिस्टम' हो सकता है कहीं भी इस्तेमाल किया जाता है आप एक एक्सप्रेस का उपयोग कर सकते हैं सायन - यह सिर्फ असाइनमेंट के लिए नहीं है। कोशिश करो और देखें! –

+0

: चलो @ 0 = 222 अब और काम नहीं करता है, मुझे नहीं पता कि क्यों, लेकिन जब मैं पी दबाता हूं तो यह चिपका नहीं जाता है। हालांकि यह सुनिश्चित नहीं था कि क्या हो रहा है। –

संबंधित मुद्दे