Qual è il nome del token '\%' e '\ @' in vim regex? E cosa fa


10

Durante la modifica del file di sintassi, ho trovato qualcosa del tipo:

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

Ho familiarità con qualsiasi altro che \%e \@lì. Non riesco nemmeno a cercare su Google perché non so come si chiama. Quindi cos'è e cosa fa?

Risposte:


14

Prima di cercare su Google, prova il documento:

A partire dal :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}

E :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
Ah, non lo so che :helppuò accettare lo schema come argomento. Sono informazioni molto preziose. A proposito, non ha un nome, vero?
Mas Bagol,

1
Non accetta esattamente schemi come argomenti: il pattern.txtfile ha argomenti su questi elementi, quindi hanno un tag di aiuto associato ( /\%(\)o /\%(o E53per il primo e /\@<!per il secondo) e questi tag possono essere usati come argomenti di :h. A proposito del loro nome, direi che si chiamano atomi proprio come ^o ., ma non ne sono sicuro al 100%.
statox

4
@statox Non accetta esattamente schemi come argomenti - Bene, questo è ciò che :helpgrepserve. :)
lcd047

@ lcd047 Accidenti come ho potuto dimenticare questo comando ?! Grazie per questo utile promemoria :)
statox

1
Questo sito a volte mi sorprende: attualmente ho fatto 170 risposte e questa è la sesta più votata mentre contiene solo due citazioni facili da trovare del documento mentre ho altre risposte con codice vimscript o come realizzare azioni più complesse. .. Non capisco perché questo sia così "di successo"
statox
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.