vimエディターで文字列をスラッシュに置き換えようとしています
例: foo to abc/def/foo
。助言がありますか?
質問のタイトルと内容が一致していません。
:help pattern
:help :substitute
少し圧倒されますが、正規表現がVimの中心にあるため、非常に便利です。
Vimの正規表現101は、より簡潔なリソースです。
とにかく、次のサンプルテキストが与えられます:
bar baz foo baz bar
あなたの目標はさまざまな方法で達成することができます。それらのいくつかを次に示します。
:s/foo/\/abc\/def\/foo
:s/foo/\/abc\/def\/&
:s+foo+/abc/def/&
いくつかの注意:
交換部品で&
は、「一致したテキスト」を表します。一致する場合はfoo
、&
ですfoo
。もちろん、ここでは&
overを使用してもあまりメリットはありませfoo
んが、より複雑なパターンになるまで待ってください…</ p>
スラッシュは検索部分と置換部分を区切るために使用されるため、置換を機能させるには、両方の部分の実際のスラッシュをエスケープする必要があります。
スラッシュの代わりに他の多くの記号を使用して、検索部分と置換部分を区切ることができます。これは、あまりにも多くのスラッシュをエスケープする必要があることがわかっている場合に非常に便利です。
vim で文字列置換を行うには、最初にビジュアル モードまたは挿入モードを終了する必要があります。次に「:」と入力して、vim コマンドを実行します。vim の置換コマンドは '%s' で始まります。持っているものをすべてまとめる
:%s/thingyouhave/thingyouwant/
上記の例では、ファイル名の「/」をバックスラッシュ「\」でエスケープする必要があります。
:%s/foo/abc\/def\/foo/
もう 1 つの便利な方法は、式の最後に 'gc' を置くことです。これにより、各変更を実行する前に確認を求めるプロンプトが表示されます。これは、式のインスタンスの一部を変更したい場合や、実行していることが正しいかどうかわからない場合に役立ちます。
:%s/foo/abc\/def\/foo/gc