2012-08-02 19 views
25

मैं थोड़ी देर के लिए इसके लिए चारों ओर देख रहा था।विम स्क्रिप्टिंग, यदि विम संस्करण <7.3

मैं एक vim प्लगइन फ़ाइल में एक लाइन जोड़ना चाहता हूं जो vim के असमर्थित संस्करण पर चलने पर इसे अक्षम कर देगा।

मैंने कहीं से याद है कि यह ऐसा ही कुछ हो जाता है:

if version > 730 
    "plugin code goes here 
endif 

लेकिन वह असफल।

+0

तुम क्यों इस तरह की कुछ काम करते हैं न:: यह व्यक्तिगत उपयोगकर्ताओं एक (सिस्टम-वाइड) स्थापित प्लगइन निष्क्रिय करने के लिए अनुमति देता है अगर संस्करण <730 खत्म endif अन्यथा - जोड़ें आप कोड प्लग। (वीआईएम फाइलों में से एक से कॉपी किया गया :) – hari

उत्तर

41

संस्करण योजना अलग है; विम 7.3 703 है, 730 नहीं।

इसके अलावा, स्पष्टता के लिए, मैं v:version (यह एक विशेष वीम चर) का उपयोग करने की सलाह देगा।

अक्सर, फीचर पेश करने वाले विम संस्करण के परीक्षण की तुलना में सुविधाओं की उपलब्धता (उदा। exists('+relativenumber')) की जांच करना बेहतर होता है, क्योंकि विम को विभिन्न सुविधाओं के साथ कस्टम-संकलित किया जा सकता है।

अंत में, प्लग इन आम तौर पर गार्ड दूसरी तरह के आसपास कार्य करें:

if v:version < 703 
    finish 
endif 
" Plugin goes here. 

और यह एक शामिल किए जाने के गार्ड के साथ इस गठबंधन करने के लिए एक अच्छा अभ्यास है।

" Avoid installing twice or when in unsupported Vim version. 
if exists('g:loaded_pluginname') || (v:version < 700) 
    finish 
endif 
let g:loaded_pluginname = 1 
+1

मेरे मामले में (और मैंने इस प्रश्न और उत्तर की तलाश क्यों की), ऐसा लगता है कि 'प्रारूप' के लिए 'j' विकल्प 7.4 में जोड़ा गया था और मेरी .vimrc की आवश्यकता है समय के लिए उस सीमा में काम करते हैं। (Srsly ऐप्पल, अभी भी 7.3 शिपिंग?) –

+0

वी कैसे दिखाएं संस्करण संस्करण? मैंने 'सेट v: संस्करण?' की कोशिश की है, लेकिन –

+1

@DanielYCLin ': set' Vim _options_ के लिए विफल रहा है; यह एक विशेष अंतर्निहित _variable_ है। आप 'echo v: version' (या' echomsg') के माध्यम से मान (किसी भी अन्य विस्क्रिप्टस्क्रिप्ट अभिव्यक्ति के साथ) दिखाते हैं। –