vimの置換には範囲パラメーターがあることがわかりました:
:[range]s/pattern/sring/[c]/[g]/[e]/[i]/[I]/[p]
しかし、視覚的な選択でのみ置換が行われるようにすると便利かどうか疑問に思います。
誰もがそれを行う方法を知っていますか?
vimの置換には範囲パラメーターがあることがわかりました:
:[range]s/pattern/sring/[c]/[g]/[e]/[i]/[I]/[p]
しかし、視覚的な選択でのみ置換が行われるようにすると便利かどうか疑問に思います。
誰もがそれを行う方法を知っていますか?
はい、できます。
視覚的に選択した後、を押すと、が表示され:
ます 。:'<,'>
'<,'>
[range]
次に、以下のように置き換えますが、これは行全体に影響することに注意してください。
:'<,'>s/foo/bar/g
視覚的に選択された領域のみに変更foo
する場合(つまり、文字単位またはブロック単位の選択)、アトムを使用する必要があります。bar
\%V
:'<,'>s/\%Vfoo/bar/g
ビジュアルセレクション(アーカイブ)での検索と置換の記事には、このトピックに関するさらに役立つ情報があります。
スコープを視覚的な線に制限するために、'<,'>
範囲が機能します。ただし、文字単位またはブロック単位の選択では、これでは不十分です。正規表現を変更するか、vis.vimプラグインを使用する必要があります。そうしないと、選択範囲外(ただし行内)の文字も影響を受けます。
Vim Tips Wikiで完全なディスカッションを見つけてください:http://vim.wikia.com/wiki/Applying_substitutes_to_a_visual_block
注:この回答は2012年のものであり、\%V
アトムを使用して(4/2/2021)視覚的選択の内側(文字単位またはブロック単位)への変更を制限できるようになりました。ビジュアルセレクション(アーカイブ)での検索と置換の記事を参照してください。ただし、上記の記事も更新されています。