web-dev-qa-db-ja.com

vimコマンドラインでPerl正規表現を使用できますか?

VimコマンドラインでPerl正規表現を使用したい。たとえば、現在の行の単語を大文字にするには、次のように入力します。

:s/(\w+)/\u$1/g
28
user51549

!を使用して、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自体を使用できます。

20
frabjous

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

:help Perl-patterns

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

:help if_Perl.txt
10
garyjohn

次のものも使用できます。

/\v"your regex"

の代わりに:

/"your regex"
9
Kevin

これが http://vim.wikia.com/wiki/Perl_compatible_regular_expressions からの解決策です。

:perldo s/(\w+)/\u$1/g

:verまたは+Perlがコンパイルされていることを+Perl/dynで確認してください。)

3
Bernhard Wagner

eregex.vim プラグインを使用します。とても便利で、問題はありませんでした。

2
DBedrenko