Jak nazywa się token „\%” i „\ @” w vim regex? A co to robi?

10

Podczas edycji pliku składniowego znalazłem coś takiego:

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

Znam kogoś innego niż \%i \@tam. Nie mogę nawet googlować, bo nie wiem, jak się nazywa. Co to jest i co robi?

Mas Bagol
źródło

Odpowiedzi:

14

Zanim przejdziesz do Google, wypróbuj dokument:

Od :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}

I :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 "//"
statox
źródło
1
Ach, nie wiem, czy :helpmożna zaakceptować wzór jako argument. To bardzo cenna informacja. Nawiasem mówiąc, nie ma nazwy, prawda?
Mas Bagol,
1
To nie dokładnie przyjąć wzory jak argumentami: pattern.txtplik ma tematy dotyczące tych elementów w ten sposób mają znacznik pomoc związana ( /\%(\)lub /\%(lub E53na pierwszym i /\@<!na drugim) i te znaczniki mogą być używane jako argumenty :h. Jeśli chodzi o ich imię, powiedziałbym, że nazywane są atomami tak jak ^lub ., ale nie jestem w 100% pewien.
statox
4
@statox Nie akceptuje wzorców jako argumentów - Cóż, po to :helpgrepjest. :)
lcd047,
@ lcd047 Cholera, jak mogłem zapomnieć o tym poleceniu ?! Dzięki za to pomocne przypomnienie :)
statox
1
Ta strona czasami mnie zaskakuje: obecnie zrobiłem 170 odpowiedzi, a ta jest szóstą najbardziej uprzywilejowaną, podczas gdy zawiera tylko dwa łatwe do znalezienia cytaty dokumentu, podczas gdy mam inne odpowiedzi z kodem vimscript lub jak realizować bardziej złożone działania. .. Nie rozumiem, dlaczego ten jest tak „udany”
statox