vimに^のようなパターンはありますか?


20

Vimの通常モードでは、0コマンドは行の最初の列に移動^し、論理的な行の先頭(たとえば、最初の非空白文字)に移動します。正規表現の世界で^は、行の最初の文字に一致します。空白かどうか。Vimには、「^」コマンドのように動作するパターンがあります。これは、行の論理的な先頭に一致しますか?


正規表現の^は通常、最初の文字ではなく行の先頭に一致すると思います。^。は、先頭と2番目の文字ではなく、先頭と最初の文字に一致します。
bdsl 14

回答:


17

行の最初の非空白文字に一致するショートカットはありません。次のように、自分でパターンを作成する必要があります。

^\s*restofpattern

マッチに空白を含めたくない場合は、次のようなゼロ幅のアサーションを使用する必要があります。

\(^\s*\)\@<=restofpattern

正確ではありませんが、少なくとも仕事は完了しています。


6

最初の空白文字に一致させるには、\S通常どおりに使用します。


^vimの正規表現で使用する場合、たとえ空白が含まれていても、実際の行の先頭と一致します。

たとえば、次の行はスペースで始まります。

 <- there's a space there you can't see :)

次のvimコマンドは、先頭のスペースを削除します。

:%s/^ //

結果は次のとおりです。

<- there's a space there you can't see :)

そのため、たとえコマンドがそうでなくても、正規表現は期待どおりに動作します。


私はあなたが下票を説明しようとしていると思います。私の知る限り、この答えは正しいです。
マイケルハンプトン

1
私はダウン投票しませんでしたが、明確にするために:行の最初の非空白文字に一致する演算子がVimにあるかどうか疑問に思いました。^(すべての正気の正規表現の実装のような)演算子は、それが空白であっても、最初の文字と一致します。
マイケル

さて、どのように普通にそれをすることを期待していましたか?通常、正規表現\Sでは、最初の非空白文字と一致するようなものを使用します。
マイケルハンプトン

2
\S空白以外の文字と一致します。別の言い方をすれば、Vimにこれに対するゼロ幅の省略形があるのではないかと思っています^\W*\S
マイケル

1
私が知っているエンジンはその機能を提供していませんが、それから再び-いつ汎用エンジンを手入れしましたか?Vimは汎用の正規表現エンジンではありません。それは正規表現エンジンを備えたエディターなので、エディター内でのみ重要な何かのための特別な構造があるのではないかと思っていました。
マイケル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.