2011-09-05 9 views
5

विशेष रूप से, मैं केवल मेकप्रग विकल्प सेट करना चाहता हूं अगर इसे अभी तक बदला नहीं गया है। इसे करने का कोई तरीका?विम में, क्या कोई तरीका है: केवल एक विकल्प सेट करें यदि यह अभी तक सेट नहीं है?

उत्तर

4

आप & का उपयोग कर किसी विकल्प की सामग्री तक पहुंच सकते हैं।

if &makeprg == "" 
    set makeprg=new_value 
endif 

--- संपादित करें ---

जेवियर अच्छा बिंदु बनाता है कि makeprg का डिफ़ॉल्ट मान नहीं है: यदि विकल्प "खाली" इस तरह है तो इस मामले में आप की जांच कर सकता एक खाली स्ट्रिंग। तुम्हें पता है, set {option}& उपयोग कर सकते हैं उसके डिफ़ॉल्ट के लिए एक विकल्प सेट करें कि निम्नलिखित मान बदलने के लिए केवल तभी वर्तमान मान डिफ़ॉल्ट है इस्तेमाल किया जा सकता:

function! SetMakePrg(new_value) 
    let cur_value=&makeprg 
    " let new_val=a:new_value 
    set makeprg& 
    if &makeprg == cur_value 
     " cur_value is default: set to new value 
     exe "set makeprg=" . a:new_value 
    else 
     " cur_value is not default: change it back 
     exe "set makeprg=" . cur_value 
    endif 
endfunction 

तो बुला call SetMakePrg("my_make") विकल्प को संशोधित करेगा ही अगर यह नहीं है वर्तमान में डिफ़ॉल्ट।

+2

मुझे यकीन नहीं है कि मेकप्रग का डिफ़ॉल्ट मान खाली है, मुझे लगता है कि डिफ़ॉल्ट 'मेक' है (लेकिन यह ओएस, आदि के आधार पर भिन्न हो सकता है)। 'वर्बोज़ सेट मेकप्रग?' रिटर्न मेकप्रग = फ़ाइल नाम के बिना बना देता है मुझे लगता है कि इसका मतलब है कि यह डिफ़ॉल्ट मान है। –

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