VimコマンドラインでPerl正規表現を使用したい。たとえば、現在の行の単語を大文字にするには、次のように入力します。
:s/(\w+)/\u$1/g
!を使用して、vimの外部コマンドで任意の行または行の範囲をフィルタリングできます。例:次のことができます:
:.!Perl -pe "s/(\w+)/\u\1/g"
これは、そのPerlコマンドを介して現在の行をフィルタリングします。 (ここでは、コマンドラインモードに入るには_:
_であり、次の_.
_は現在の行を意味します。ファイル全体に対して行範囲または_%
_を指定することもできます。)
Vimの組み込み置換パターンを使用する場合は、次のように、vimの「非常に魔法の」オプションである\ vを使用するのが最も簡単です。
:s/\v(\w+)/\u\1/g
詳細については、_:help pattern
_および_:help substitute
_を参照してください。 「非常に魔法」はPerlのパターンとまったく同じではないと思いますが、非常に近いものです。とにかく、上記のように、Perlに慣れている場合は、いつでもPerl自体を使用できます。
いいえ、そのような方法でPerl正規表現を使用することはできません。 Perl正規表現コンポーネントに相当するVimの学習については、を参照してください。
:help Perl-patterns
ただし、frabjousで説明されているように、Perlを外部フィルターとして使用できます。 Vimが+Perl
機能でコンパイルされている場合は、Perlインターフェースを使用してVim内でPerlコマンドを実行することもできます。見る
:help if_Perl.txt
次のものも使用できます。
/\v"your regex"
の代わりに:
/"your regex"
これが http://vim.wikia.com/wiki/Perl_compatible_regular_expressions からの解決策です。
:perldo s/(\w+)/\u$1/g
(:ver
または+Perl
がコンパイルされていることを+Perl/dyn
で確認してください。)
eregex.vim プラグインを使用します。とても便利で、問題はありませんでした。