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 自体の方が使いやすい場合は、いつでも Perl 自体を使用できます。

答え2

以下も使用できます:

/\v"your regex"

の代わりに:

/"your regex"

答え3

いいえ、Perlの正規表現をそのように使用することはできません。Perlの正規表現コンポーネントのVim相当については、以下を参照してください。

:help perl-patterns

ただし、frabjous が説明しているように、Perl を外部フィルターとして使用できます。Vim が Perl 機能付きでコンパイルされている場合は、Perl インターフェースを使用して Vim 内で Perl コマンドを実行することもできます+perl

:help if_perl.txt

答え4

使用eregex.vimプラグインです。非常に便利で、問題もありませんでした。

関連情報