2

オプションで単語のペアを見つけるための VIM 正規表現が必要です。これらは他の単語で区切ることができますが、両方とも同じ行にある必要があります。たとえば、open と close を一致させたい場合は、次のように一致する必要があります。

open foo close
open close
foo

これらは一致しないはずです:

open foo
open
foo close
close

単語を一致させるために先読みと後読みを使用しようとしましたが、適切な組み合わせが見つからないようです。

単一の文字に対してこれを行う方法は知っていますが、言葉に完全に迷ってしまいました。

ここに試みがあります:

s/\(\(open\)\@=.*\(close\)\@=\)*

同じことですが、「open」と「close」の代わりに「a」と「c」を使用すると、次のことができます。

s/^\(a[^ac]*c\|[^ac]\)*$

これにより、これらの行すべて (および空白行) が選択されます。

acabcacabbbbcbbb
ac
abc
b

でも選ばない

acbbc
ab
bc
a
c

これは私が探している機能ですが、言葉があります。

どんな助けでも大歓迎です。

ありがとう!ナチュム

編集:インデントスクリプトに取り組んでいますが、これは役に立ちました。代わりに、単語を検索して 1 文字に変換することになりました。次に、すでに使い慣れた方法を使用して、単一の文字を一致させました。少なくとも、最初の変換が完了すると、コードが短縮されます。

4

2 に答える 2

2

これを検索するだけです:

open.*close
于 2013-10-05T17:10:57.837 に答える
0

私はこれがあなたが探しているものだと信じています。

^((?!.*open|.*close).*|.*open.*close.*)$

次のように分類されます。

(?!.*open|.*close).*- オープンまたはクローズを除くもの、
または
.*open.*close.*- オープンとクローズの両方を含むもの

私はvimに精通していませんが、あなたが示したことから、構文を変換できるように見えると思います。

于 2013-10-05T20:30:30.623 に答える