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 pattern
und :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 +perl
Funktion kompiliert wurde. Siehe
:help if_perl.txt
Antwort4
Verwenden Sie dieeregex.vimPlugin. Es ist sehr nützlich und ich hatte keine Probleme damit.