vimで2D検索を実行するにはどうすればよいですか?


4

ファイル内で2次元パターンに一致する行を探しています。

たとえば、次の入力ファイルが与えられた場合:

aaaba
aabaa
aaaba
aaaaa
aaaaa

次のようなパターンを使用したい

ab
ba
ab

上の3行で一致します。理想的には、そのパターンで置換できるようにしたいと思います。たとえば、

ba
ab
ba

回答:


3

これは、正規表現だけでは行えません。キャプチャグループのように機能する特別なアトムが必要ですが、代わりに列をキャプチャしてから、対応するアトムを呼び出します。あなたができる最善のことは、あなたの例のために、後続の行の各行を一致させることです

/ab\ze.*\n.*ba.*\n.*ab/

それにより、ブロックの行と一致する行だけでなく、ブロックのテキストを含むすべての出現が一致しますが、同じ垂直方向の配置だけでなく、最初の行の一致のみが強調表示されます。私のSearchHighlightingプラグインもこの機能を提供します(にマッピングされます{Visual}*)。

それで十分でない場合(/cフラグを使用して:substitute各一致を手動で検証および確認できます)、独自の検索(および代替)インフラストラクチャ、つまり/n/ N、およびに相当するものを構築し、:sブロックの追加アサーションを行う必要があります-Vimscriptのアライメント。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.