2010-07-09 8 views
37

मैं वीआईएम में उपयोगकर्ता द्वारा परिभाषित कमांड बनाने की कोशिश कर रहा हूं जो एक तर्क लेता है और उपयोगकर्ता द्वारा दिए गए तर्क के साथ एक फ़ंक्शन को कॉल करता है। सरल लगता है लेकिन मैं इसे काम करने में असमर्थ हूं। यहाँ मेरी foo.vim प्लगइन से कोड है:वीआईएम: उपयोगकर्ता कमांड से कार्यों के लिए तर्क कैसे पास करें?

function! s:MyFunc(myParam) 
    do something 
endfunction 

command! -nargs=1 MyCommand call s:MyFunc(myParam) 

जब मैं इस इस तरह एक विम बफर में आजमा कर देखें:

:MyCommand exampleParam 

मैं निम्नलिखित त्रुटियाँ:

E121: Undefined variable: myParam 
E116: Invalid arguments for function <SNR>7_MyFunc 

यहाँ क्या गलत है? मैं यह कैसे तय करुं? कोई भी मदद बहुत ही सराहनीय होगी।

उत्तर

50

उपयोग <f-args>:

command! -nargs=1 MyCommand call s:MyFunc(<f-args>) 
+1

यह काम करता है! धन्यवाद! धन्यवाद! और फिर: धन्यवाद !!! – venk

+0

मुझे यकीन नहीं था कि '!' का मतलब क्या था ... इसका मतलब मौजूदा कमांड को ओवरराइट करना है। मुझे यह सहायक मिला: http://www.adp-gmbh.ch/vim/user_commands.html \t > 'com: 'मौजूदा-cmd-name cmd-replacement' – alockwood05

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