अगर एंडिफ़ेल ऑनलाइनर


11

मैं अपने में इस oneliner है, vimrcलेकिन यह काम नहीं करता है:

if has("patch-7.4.710") | set listchars+=space:· else | set listchars+=trail:· | endif

VIM कहता है:

E518: Unknown option: else

क्या आप मेरी मदद कर सकते हैं ?

जवाबों:


19

आपको |पहले एक और डालने की आवश्यकता है elseअन्यथा विम को लगेगा कि आपकी कमांड set listchars+=space:· elseदो अलग-अलग कमांड के बजाय है। इसलिए आपको त्रुटि संदेश मिला: elseकमांड के लिए एक अज्ञात विकल्प है set।

सही सिंटैक्स निम्नलिखित है:

if has("patch-7.4.710") | set listchars+=space:· | else | set listchars+=trail:· | endif

मैं संघर्ष कर रहा था कि मैं कहाँ |, पहले या बाद में जगह पाऊँगा else? अब, मैं अब यह दोनों है :-D। बहुत बहुत धन्यवाद :) !
— सेबमा

2
@SebMa: सोचें कि यदि आपके कोड को कई लाइनों पर लिखा गया है, तो vim आपका कोड कैसे पार करेगा: निर्देश 1 if has("patch-7.4.710"), अनुदेश 2 set listchars+=space:·, अनुदेश 3 else, अनुदेश 4 set listchars+=trail:·और अंतिम निर्देश endif। के रूप में |अलग-अलग निर्देशों के लिए किया जाता है कि यह पहले एक डाल करने के लिए केवल तार्किक है elseके बाद :) और एक
— statox

1
यह तर्कसंगत है जब तक कोई भाषा जानता है। C में, हम ;अलग-अलग निर्देशों का उपयोग करते हैं । C elseमें कोई निर्देश नहीं है, अन्यथा इसके ;बाद भी होता :) :)
— SebMa

1
VScript के शब्दार्थ C @SebMa की तुलना में शेल स्क्रिप्टिंग के बहुत करीब हैं।
— मार्टिन Tournoij

1
@SebMa नहीं, लेकिन नियंत्रण संरचनाओं सहित "(लगभग) सब कुछ का शब्दार्थ एक कमांड है" विमस्क्रिप्ट (और सी से अलग) के समान है।
— मार्टिन टूरनोइज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.