विम रेगेक्स में '\'% और '\' 'टोकन का नाम क्या है? और यह क्या करता है?


10

सिंटैक्स फ़ाइल को संपादित करते समय, मुझे कुछ ऐसा मिला:

\s*\%(\%(:\@<!\/\/.*\)\=\|\%(\/\*.*\*\/\s*\)*\)$

मैं वहां \%और \@उसके अलावा किसी और से परिचित हूं । मैं गुगली भी नहीं कर सकता क्योंकि मुझे नहीं पता कि यह क्या नाम है। तो यह क्या है और यह क्या करता है?

जवाबों:


14

गुग्लिंग से पहले, डॉक्टर की कोशिश करें:

से :h \%

\%(\)   A pattern enclosed by escaped parentheses.
    Just like \(\), but without counting it as a sub-expression.  This
    allows using more groups and it's a little bit faster.
    {not in Vi}

तथा :h \@<!

\@<!    Matches with zero width if the preceding atom does NOT match just
    before what follows.  Thus this matches if there is no position in the
    current or previous line where the atom matches such that it ends just
    before what follows.

    Like "(?<!pattern)" in Perl, but Vim allows non-fixed-width patterns.
    The match with the preceding atom is made to end just before the match
    with what follows, thus an atom that ends in ".*" will work.
    Warning: This can be slow (because many positions need to be checked
    for a match).  Use a limit if you can, see below.

    Example         matches ~

    \(foo\)\@<!bar      any "bar" that's not in "foobar"

    \(\/\/.*\)\@<!in    "in" which is not after "//"

1
आह, मुझे नहीं पता कि :helpपैटर्न को तर्क के रूप में स्वीकार कर सकते हैं। यह बहुत मूल्यवान जानकारी है। वैसे, यह एक नाम नहीं है, है ना?
मास बगोल

1
यह बिल्कुल तर्कों के रूप पैटर्न को स्वीकार नहीं करता: pattern.txtफ़ाइल इन वस्तुओं के बारे में विषय इस तरह वे एक सहायता टैग जुड़े (राशि है /\%(\)या /\%(या E53पहले एक के लिए और /\@<!दूसरे के लिए) और इन टैग के तर्कों के रूप में इस्तेमाल किया जा सकता :h। अब उनके नाम के बारे में, मैं कहूंगा कि उन्हें परमाणु कहा जाता है जैसे ^या ., लेकिन मुझे 100% यकीन नहीं है।
statox

4
@statox यह बिल्कुल तर्क के रूप में पैटर्न को स्वीकार नहीं करता है - ठीक है, यही :helpgrepहै। :)
lcd047

@ lcd047 धिक्कार है कि मैं कैसे इस आदेश के बारे में भूल सकता है ?! यह सहायक अनुस्मारक के लिए :) धन्यवाद
statox

1
यह साइट मुझे कभी-कभी आश्चर्यचकित करती है: वर्तमान में मैंने 170 उत्तर दिए हैं और यह 6 वाँ सबसे अधिक उत्थान है, जबकि इसमें केवल दो आसान हैं जो कि डॉक के उद्धरणों को खोजने के लिए हैं जबकि मेरे पास अन्य उत्तर हैं जो कि विम्सस्क्रिप्ट कोड के साथ हैं या अधिक जटिल क्रियाओं का एहसास कैसे करें। .. मैं क्यों इस एक तो "सफल" है नहीं मिलता है
statox
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.