Vi 検索範囲と置換

Vi 検索範囲と置換

vi私はこれらの方法が利用できないTru64システムを使用しています\1

次の簡単な質問に対する答えが見つかりません。

検索(範囲)を置換と関連付けるには?次のように見えますが、うまくいきません。

:/^group/s/\w$/Test/

興味のある方のために、次のように試してみました\1

:%s/\(group\s\+\)\w/\1Test/

ベストアンサー1

\wここで主な問題は、省略表記法sumを使用することです\s。編集者なら伝統的な実装(Bill Joyのソースソース)の場合は、ほとんどの最新実装でデフォルトで設定されているオプションをvi設定したい場合があります。これはで行われます。magicvi:set magic


vidosなどのさまざまな文字クラスの同様の略語を\w理解していません。\svim

で交換するには、vi以下を使用してください。

:%s/^\(group[  ][  ]*\)[0-9A-Za-z_]/\1Test/

~によるとvim出荷書類ビーチ\wおよびに対応するスペースまたはタブ文字です(スペースとタブ文字の両方の上にあります)。[0-9A-Za-z_]\s[ ]

パターンE+E置き換えることができる式ですEE*

\1交換部品の交換は(viすべてvi)で操作する必要があります。そうでない場合nvi(「new」)を試してみるか、インストールviできることを確認してくださいvim

元のバージョン(少なくとも一部のBSDシステムにパッケージされている場合vi)では、などの「特殊文字」(および除外)をエスケープする必要があります。または、オプションを設定できます(最新の実装ではこれがデフォルトの場合が多い)。traditional-vi^$\*\.magic:set magicvi

上記の交換は、(例えば)の全ての項目を置き換える。

group 1

そして

group Test

試したのと同じことを行うもう1つの方法は次のとおりです。

:g/^group/s/[0-9A-Za-z_]$/Test/

そうでなければ

:g/^group/s/.$/Test/

行の最後の文字に注意しすぎる必要がない場合。

最後のものを交換したい場合言葉(最後の文字だけでなく)次の操作を行います。

:g/^group/s/[^ ]*$/Test/

viオプションセットがない伝統的な場合は、magic次のように書く必要があります。

:g/^group/s/\[^ ]\*$/Test/

おすすめ記事