Vim-Regex: + muss maskiert werden, * nicht. Warum?

Vim-Regex: + muss maskiert werden, * nicht. Warum?

Angenommen, Sie möchten Zeilen auswählen, die Folgendes enthalten: optionale Leerzeichen, gefolgt von einer positiven Ganzzahl, gefolgt von weiteren optionalen Leerzeichen.

Hier ist ein regulärer Ausdruck, der hierfür funktioniert:

:g/^\s*\d\+\s*/

Der *Operator wird nicht maskiert, während der +Operator maskiert wird. Das Maskieren *unterbricht den regulären Ausdruck. Dasselbe gilt für das Aufheben des Maskierens +.

Gibt es dafür eine gute Erklärung? Am besten etwas, das die Regel intuitiv macht. Mit vim hatte ich wegen ungewöhnlicher Escape-Regeln immer Probleme, reguläre Ausdrücke zu schreiben, daher würde ich mich über eine Einsicht freuen, die mir alles klar macht.

Antwort1

Dies hat historische Gründe und würde die Kompatibilität beeinträchtigen, wenn es geändert würde. Sie können Ihrem Muster jedoch das Präfix voranstellen, um \v„very magic“ einzuschalten, sodass Sie keine spezielle Escape-Methode verwenden müssen. Siehe :help /\v.

verwandte Informationen