2012-08-29 11 views
7

मैं एक समारोह है कि setlocal कॉल परम (रों) है कि मैं में पारित करने के लिए कुछ चर सेट करने के लिए लिखने की कोशिश कर रहा हूँ। लेकिन मैं त्रुटि Number required after =: tabstop=...vim कार्यों में संख्यात्मक चर सेट करने के लिए कैसे

function! MyFunction(param) 
    setlocal tabstop=param 
    setlocal tabstop=a:param 
endfunction 
हो रही है

दोनों पंक्तियां विफल हो जाएंगी। क्या मैं कुछ प्रकार के परिवर्तनीय इंटरपोलेशन में लापता हूं?

उत्तर

15

आपको विकल्प को &option चर के रूप में परिभाषित करने की आवश्यकता है। उदाहरण के लिए:

fun! MyFun(param) 
    let &l:tabstop = a:param 
endfun 

:help let-& देखें। &l: उस टैग के नीचे एक छोटा सा सूचीबद्ध है जो दिखाता है कि यह setlocal के बराबर है। असल में, जब आप परिभाषित मान के बजाय अभिव्यक्ति के लिए एक विकल्प सेट करना चाहते हैं तो आपको set option= के बजाय let &option= का उपयोग करने की आवश्यकता है। setlocal option= के बजाय let &l:option= का उपयोग करें। वैश्विक स्तर पर विकल्प सेट करने के लिए &g:option भी है।

+2

'& l:' और '& g:' के बारे में अच्छी व्याख्या, लेकिन ''टैबस्टॉप' स्थानीय बफर करने के लिए स्थानीय है इसलिए 'let & l: tabstop = a: param', एक सरल' चलो और टैबस्टॉप करने की कोई आवश्यकता नहीं है = ए: परम 'करेंगे। –

+0

ग्रेट, धन्यवाद @ कॉनर! @ पीटररकरर आह, लेकिन मुझे अन्य वर्र्स भी सेट करना होगा। फिर भी आगाह करने के लिए धन्यवाद। – jjt

+1

धन्यवाद! मैंने एक घंटे के करीब बिताया कि मेरा पहला विम फ़ंक्शन कैसे करें, बस एक कमांड में टैबस्टॉप और शिफ्टविड्थ सेट करने के लिए। अब मैं vim कार्यों लेखन सारा दिन बर्बाद कर के लिए अपने रास्ते पर हूँ ... – jbo5112

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