我想在 vim 命令列上使用 perl 正規表示式。例如,要將目前行上的單字大寫,您可以輸入:
:s/(\w+)/\u$1/g
答案1
您可以使用 ! 透過 vim 中的外部命令過濾任何行或行範圍。例如,你可以這樣做:
:.!perl -pe "s/(\w+)/\u\1/g"
它將透過該 perl 命令過濾目前行。 (這裡:
進入命令列模式,.
後面的表示目前行;也可以指定行範圍或%
整個文件等)
如果你想使用 vim 內建的替換模式,最接近的方法就是使用 vim 的「非常神奇」選項 \v,如下所示:
:s/\v(\w+)/\u\1/g
請參閱:help pattern
和:help substitute
了解更多詳細資訊。我不認為“very magic”與 Perl 的模式完全相同,但非常接近。不管怎樣,如果你更喜歡 Perl 本身,你總是可以使用它,如上所述。
答案2
您也可以使用:
/\v"your regex"
代替:
/"your regex"
答案3
不,您不能以這種方式使用 Perl 正規表示式。如需學習 Perl 正規表示式元件的 Vim 等效項的協助,請參閱
:help perl-patterns
但是,您可以使用 Perl 作為外部過濾器,如 frabjous 所解釋的。如果您的 Vim 是使用該+perl
功能編譯的,您也可以使用 Perl 介面在 Vim 中執行 Perl 命令。看
:help if_perl.txt
答案4
使用eregex.vim插入。它非常有用,我用起來沒有任何問題。