セクション

visualモードで選択した範囲に含まれる「行」ではなく、選択した「テキスト」にだけ置換処理を適用する。

作者: 小見 拓 最終変更 2009年12月05日 19時24分

visualモードで選択した範囲に含まれる「行」ではなく、 visualモードで選択した「テキスト」にだけ置換処理を行いたいなら、 アトム「\%V」が役に立ちます。 アトム「\%V」を検索の条件で使用すると、visualモードで選択した範囲を指定できるのです。 (Windows, Mac)

概要

visualモードで選択した範囲に含まれる「行」ではなく、
visualモードで選択した「テキスト」にだけ置換処理を行いたいなら、
アトム「\%V」が役に立ちます。
アトム「\%V」を検索の条件で使用すると、visualモードで選択した範囲を指定できるのです。

アトム「\%V」を使った置換処理

選択した範囲の「行」に対する置換処理

visualモードで範囲を選択した後、次のように置換処理のコマンドを実行すると、
visualモードで選択した範囲に含まれる「行」に対して置換処理を実行します。

" 選択した範囲に含まれる「行」の「b」を「X」に置換
:'<,'>:s/b/X/g
選択した範囲の行で置換処理実行

↓(選択の範囲外も「行」に含まれていれば、置換の対象となる)

選択した範囲の行で置換処理実行

選択した範囲の「テキスト」に対する置換処理

しかし、アトム「\%V」を使用して、次のように置換処理のコマンドを実行すると、
visualモードで選択した範囲の「テキスト」に対してだけ、置換処理を実行できます。

" 選択した範囲の「テキスト」に含まれる「b」を「X」に置換
:'<,'>:s/\%Vb/X/g
選択したテキストの範囲で置換処理実行

↓(選択した範囲にだけ、置換処理が実行される。)

選択したテキストの範囲で置換処理実行

↓(コマンド部分をズーム)

コマンドのズームアップ

Note

それぞれの置換処理の実行結果に注目してください。
違いは、行のテキストに対して置換処理が実行されるか、 選択したテキストに対して置換処理を実行するか、です。

選択した範囲の行で置換処理実行

↓(アトム「\%V」を使うと)

選択したテキストの範囲で置換処理実行

Note

次のような方法もあります。
一度、visualモードの選択エリアを解除してから、次のようにコマンドを実行。
すると、直前まで選択していた「テキスト」に、置換処理が実行されます。

" 選択した範囲の「テキスト」に含まれる「abcd」を「ABCD」に置換
:%s/\%Vabcd/ABCD/g
ドキュメントアクション
コメント
{no}. {user_name}  {posted}
{message_body}

(必須)
氏名を入力してください。
Eメールアドレスを入力してください。
(必須)
送りたいメッセージを入力してください。
Recent Comment
EnhCommentify.vim : 複数のファイルタイプに対応したソースコメントアウト、コメントアウト解除スクリプト — 名無しのvim使い
==> anonymous [2010/03/22 06:32:47]
vimエディタから外部のプログラムやコマンドを実行する。 — 名無しのvim使い
==> 通りすがりnoです [2010/02/04 18:28:49]
==> 通りすがりの者です [2010/02/04 18:30:28]
==> 通りすがりのものです2 [2010/02/04 18:41:38]
PCに昨日初めてさわった人でもわかるgvim超々入門 (Windows、vim6) — 名無しのvim使い
==> anonymous [2009/11/05 11:57:11]
==> 佐藤 よしお [2009/11/27 15:53:34]
==> 小見 拓 [2009/11/27 18:40:42]
==> anonymous [2010/01/06 19:48:09]
Update Feed
RSS1.0 / RSS2.0 / ATOM