たとえば、約800行の長さのさまざまなドメイン名を含むファイルがあります。私たちはvimを使ってwww.example.**で始まるすべてのドメイン名をすばやく見つけたいと思います。ここで、**は任意のタイプの2文字です。
example.site"
example.link]"
example.example'
example.ex'
example.xx]"'
これでvimで用語を使用して検索できます。しかし、上記の例で見つけることがexample.
できるように一致させるためにワイルドカードをどのように使用しますか?example.ex' and example.xx]"
私たちはこのように文字列を強調したくない
> example.site"
> example.link]"
> example.example'
ちょうどexample.ex and example.xx
(他のすべての文字列を削除し、一意に一致する文字列を保持できる場合はより良いでしょう)
答え1
あなたが使用できる:
/example\.\w\w\W
「例」を検索してみてください。 2つの「単語文字」\w
と「単語以外の文字」が順番に続きます。\W
パターンと一致しないすべての行を削除するには、次の手順を実行します。
:v/example\.\w\w\W/delete
それ以外の場合:
:v/example\.\w\w\W/d
または、否定でg [lobal]コマンドを使用してください!
。
:g!/example\.\w\w\W/d
上記の3つのコマンドは次のとおりです。
example.site"
example.link]"
example.example'
example.ex'
example.xx]"'
以下を入力してください:
example.ex'
example.xx]"'
修正する
これらのパターンが同じ行にある場合を処理するには、次の手順を実行します。
example.site"
example.example' example.ex' example.link]"
example.xx]"'
次の検索パターンを使用できます。
/example\.\w\w\w[^ ]* \?
「はい」を見つける方法で動作します。 3つの「単語文字」の後に、任意の数の文字が続きます。いいえ空白[^ ]*
で、オプションで空白で終わります\?
。
したがって、一致するものを何もないものに置き換えることができます。つまり、最初g
に見つかった一致だけでなく、行内のすべての一致にも代替項目が適用されます。
:%s/example\.\w\w\w[^ ]* \?//g
取得するには:
example.ex'
example.xx]"'
(以下を使用して空白行を削除することもできます:g/^$/d
。|
:%s/example\.\w\w\w[^ ]* \?//g | %g/^$/d