我可以在 vim 命令列中使用 perl 正規表示式嗎?

我可以在 vim 命令列中使用 perl 正規表示式嗎?

我想在 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插入。它非常有用,我用起來沒有任何問題。

相關內容