एक 'सामान्य' कमांड की अभिव्यक्ति में एक चर का उपयोग कैसे करें?


13

जब कोई normal!वैंपस्क्रिप्ट के माध्यम से किसी चीज को निष्पादित करता है, तो वह चर का उपयोग कैसे कर सकता है ?

उदाहरण:

function! MyFunction(someArg)
   normal! (a:someArg)l
endfunction

यह कर्सर के someArgचरणों को दाईं ओर ले जाना चाहिए ।


4
आपको उपयोग करने की आवश्यकता हैexe "norm!" variable
क्रिश्चियन Brabandt

जवाबों:


21

executeसमारोह तर्क के रूप में एक स्ट्रिंग लेता है, यह स्ट्रिंग फैलता है और यह आ नियमित पूर्व आदेश पर अमल। इस प्रकार आप कर सकते हैं:

function! MyFunction(someArg) 
    execute "normal! ". a:someArg. "l" 
endfunction

.CONCATENATE तार करने के लिए एक मानक vimscript ऑपरेटर है।

executeको छोटा किया जा सकता है exe

देख :h :execute


EDIT मैं @Christian Brabandt की टिप्पणी के बारे में एक बिंदु जोड़ दूंगा .

डॉक्टर कहते हैं:

बीच में एक जगह के साथ कई तर्क समेटे हुए हैं। अतिरिक्त स्थान से बचने के लिए "।" ऑपरेटर को एक तर्क में तार जोड़ने के लिए।

तो कमांड हो सकती है:

execute "normal!" a:someArg . "l"

निष्पादित कमांड होगी:

normal! 2l

8
आपको '' की जरूरत नहीं है। exe बिना किसी स्थान के साथ तारों को समतल करेगा।
क्रिश्चियन ब्रेबांट

1
@ChristianBrabandt गंभीरता से प्रतीक्षा करें? मैं नहीं जानता था कि।
तुम्बलर 41

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