Kann ich reguläre Perl-Ausdrücke in der Vim-Befehlszeile verwenden?

Kann ich reguläre Perl-Ausdrücke in der Vim-Befehlszeile verwenden?

Ich möchte reguläre Perl-Ausdrücke in der Vim-Befehlszeile verwenden. Um beispielsweise die Wörter in der aktuellen Zeile groß zu schreiben, könnten Sie Folgendes eingeben:

:s/(\w+)/\u$1/g

Antwort1

Sie können jede Zeile oder jeden Zeilenbereich durch einen externen Befehl in vim filtern, indem Sie ! verwenden. Sie können beispielsweise Folgendes tun:

:.!perl -pe "s/(\w+)/\u\1/g"

Dadurch wird die aktuelle Zeile durch diesen Perl-Befehl gefiltert. (Hier :gelangen Sie in den Befehlszeilenmodus. Das .Folgende bedeutet die aktuelle Zeile. Sie können auch einen Zeilenbereich oder %die gesamte Datei usw. angeben.)

Wenn Sie die in Vim integrierten Ersetzungsmuster verwenden möchten, kommen Sie dem am nächsten, indem Sie die „sehr magische“ Option \v von Vim verwenden, und zwar folgendermaßen:

:s/\v(\w+)/\u\1/g

Weitere Einzelheiten finden Sie unter :help patternund :help substitute. Ich glaube nicht, dass „very magic“ ganz identisch mit den Mustern von Perl ist, aber es kommt ihnen sehr nahe. Wie dem auch sei, Sie können immer Perl selbst verwenden, wenn Sie damit besser zurechtkommen, wie oben beschrieben.

Antwort2

Sie können auch Folgendes verwenden:

/\v"your regex"

anstatt:

/"your regex"

Antwort3

Nein, Sie können Perl-reguläre Ausdrücke nicht auf diese Weise verwenden. Hilfe zum Erlernen der Vim-Äquivalente für Perl-reguläre Ausdruckskomponenten finden Sie unter

:help perl-patterns

Sie können Perl jedoch als externen Filter verwenden, wie von frabjous erklärt. Sie können Perl-Befehle auch innerhalb von Vim mithilfe der Perl-Schnittstelle ausführen, wenn Ihr Vim mit dieser +perlFunktion kompiliert wurde. Siehe

:help if_perl.txt

Antwort4

Verwenden Sie dieeregex.vimPlugin. Es ist sehr nützlich und ich hatte keine Probleme damit.

verwandte Informationen