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プラグインです。非常に便利で、問題もありませんでした。