2012-03-02 26 views
16

मैं अपने जीवन के लिए Google या यहां या सहायता फ़ाइलों में इसका उत्तर नहीं ढूंढ सकता।विमस्क्रिप्ट में = ~ मतलब क्या है?

if "test.c" =~ "\.c" 

पहले तो मुझे में =~ मतलब समाप्त होता है सोचा है, लेकिन इन परिणामों पर नज़र डालें:

Command        Result 
echo "test.c" =~ "\.c"    1 
echo "test.c" =~ "\.pc"    0 
echo "test.pc" =~ "\.c"    1 
echo "testc" =~ "\.c"     1 
echo "ctest" =~ "\.c"     1 
echo "ctestp" =~ "\.pc"    0 
echo "pctestp" =~ "\.pc"    0 
echo ".pctestp" =~ "\.pc"    0 

एक व्याख्या बहुत अच्छा होगा। विमस्क्रिप्ट को समझने की कोशिश करने वाली साइट पर एक लिंक भी बेहतर होगा।

+0

वहाँ कोई रास्ता नहीं है '" ctest = ~ "\ ग" 'और' ".pctestp, यह है शायद सबसे अच्छा करने के लिए है \ .pc" ' – Benoit

+0

वैसे" ~! "। '= ~' से बचें, लेकिन इसके बजाय '= ~ # 'या' = ~?' का उपयोग करें, जो स्पष्ट रूप से निर्दिष्ट करता है कि आप केस-संवेदनशीलता या असंवेदनशीलता चाहते हैं। सादा '= ~' के साथ, यह उपयोगकर्ता की वर्तमान सेटिंग्स पर निर्भर करता है। जानकारी: http://vimdoc.sourceforge.net/htmldoc/eval.html#expr4 –

उत्तर

35

From the Vim documentation, यह बाएं के अंदर दाएं ऑपरेंड (पैटर्न के रूप में) का पैटर्न मिलान करता है।

a =~ b  matches with 
    a !~ b  does not match with 

बाईं आइटम "एक" एक स्ट्रिंग के रूप में इस्तेमाल किया जाता है:

तार के लिए दो और अधिक आइटम नहीं है। सही वस्तु "बी" को पैटर्न के रूप में प्रयोग किया जाता है, जैसे कि खोज के लिए क्या उपयोग किया जाता है। उदाहरण:

:if str =~ " " 
    : echo "str contains a space" 
    :endif 
    :if str !~ '\.$' 
    : echo "str does not end in a full stop" 
    :endif 

आप अपने परीक्षण मामलों को फिर से कोशिश कर सकते हैं। मैं तुम्हारा साथ उदाहरण के लिए मिलता है, असंगत:

echo "test.pc" =~ "\.c"    1 
echo "test.pc" =~ '\.c'    0 
+0

धन्यवाद, यह दोहरे उद्धरण थे जो मुझे अजीब व्यवहार दे रहे थे – puk

+0

@puk जो मैंने अभी तक नहीं पाया है वह दस्तावेज़ हैं जो समझाते हैं उद्धरण में अंतर ... –

+1

मुझे लगता है कि vim पर प्रलेखन पूरी जगह पर है। ': help' पृष्ठ अत्यधिक मददगार हैं उल चीजों जैसे 'डी' या': एलएस' के लिए उल, लेकिन बेकार है अगर आप नहीं जानते कि आप क्या खोज रहे हैं (यानी। 'Stridx()')। इसी तरह, विम विकी कुंजी और आज्ञाओं के लिए बहुत अच्छा है, लेकिन उपर्युक्त 'stridx() 'जैसे कार्यों के लिए इतना नहीं है। – puk

3

डॉक्स से::

  • echo ".pctestp" =~ "\.pc"    1 
    

    और डबल उद्धरण एकल उद्धरण बनाम को प्रभावित करने के लिए कैसे बैकस्लैश व्याख्या की है लगता है

    http://vimdoc.sourceforge.net/htmldoc/usr_41.html

    तारों के लिए दो और आइटम हैं:

    a =~ b  matches with 
    a !~ b  does not match with 
    

    बायां आइटम "ए" एक स्ट्रिंग के रूप में उपयोग किया जाता है। सही आइटम "बी" को पैटर्न के रूप में उपयोग किया जाता है, जैसे खोज के लिए उपयोग किया जाता है। उदाहरण:

    :if str =~ " " 
    : echo "str contains a space" 
    :endif 
    :if str !~ '\.$' 
    : echo "str does not end in a full stop" 
    :endif 
    
संबंधित मुद्दे