特別編1 vi 入門 | ビジュアルモード 矩形選択(Ctrl+v)で複数行を縦にまとめて編集する|UNIX Cafe

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。

特別編1 vi 入門 | ビジュアルモード 矩形選択(Ctrl+v)で複数行を縦にまとめて編集する|UNIX Cafe

UNIX Cafe | 特別編1

目次

効率が劇的に変わる「vi ビジュアルモード」の魔法

ビジュアルモードに慣れてくると、さらに便利に感じられるのが矩形選択です。普通の文字選択や行選択とは少し違い、複数行の同じ位置をまとめて扱えるようになります。

今回のゴールは、Ctrl + v を中心に、ビジュアルモードを一歩進めた使い方の感覚をつかむことです。

この記事で学べること
矩形選択の基本操作、実際の編集シナリオ(削除・コピー・挿入)、使いどころとコツを具体的な例つきで解説します。

動画で流れを先に見たい方は、UNIX Cafe の YouTube もあわせてどうぞ。記事と同じく、初心者向けのやさしい流れで vi の最初の一歩を確認できます。

まずはビジュアルモードの3種類を整理する

vi(Vim)のビジュアルモードには3つの種類があります。どれも「選択してから操作する」という流れは同じですが、選択の形が異なります。

キーモード名選択の単位よく使う場面
v文字ビジュアルモードカーソルが通った文字ひとつひとつ文の一部をコピー・削除したいとき
V行ビジュアルモード行ごとまるごと複数行をまとめて移動・削除したいとき
Ctrl + v矩形ビジュアルモード縦に揃った四角形の範囲複数行の同じ列を一括編集したいとき

矩形選択だけが「縦」を意識した選択です。テキストを「行の流れ」ではなく「列の位置」で捉えるのが特徴です。

Ctrl + v で矩形選択する

矩形選択を始めるには、ノーマルモードで Ctrl + v を押します。画面下部に -- VISUAL BLOCK -- と表示されれば、矩形ビジュアルモードに入っています。

開始したあとは、カーソルキー(h j k l)または矢印キーで範囲を広げます。

選択できる範囲のイメージ

次のようなテキストがあったとします。

apple  100
banana 200
cherry 300

「100」「200」「300」の部分だけを縦に選択したい場合、普通のビジュアルモード(v)では文字の流れに沿って選ぶため難しいです。矩形選択なら「7列目から9列目」という形で3行分まとめて選べます。

apple  [100]円
banana [200]円
cherry [300]円

上の例で [ ] で囲まれた部分が、矩形選択で一括して扱える範囲です。

実例①:複数行の先頭文字をまとめて削除する

こんな場面で使える

設定ファイルやスクリプトのコメントを一括で外したいとき。たとえば次のように、複数行の先頭に # が付いた状態を解除したいとします。

Before(コメントアウト状態)

#export PATH=/usr/local/bin
#export EDITOR=vim
#export LANG=ja_JP.UTF-8

After(# を削除した状態)

export PATH=/usr/local/bin
export EDITOR=vim
export LANG=ja_JP.UTF-8

手順

  1. 削除したい最初の # にカーソルを移動する
  2. Ctrl + v で矩形ビジュアルモードを開始する
  3. j を2回押して、下の2行まで選択を広げる(選択が3行分になる)
  4. d を押して削除する
Ctrl+v  # 矩形ビジュアルモード開始
2j      # 2行下まで選択(3行分)
d       # 選択範囲を削除

✔ ポイント

2j のように数字を組み合わせると、一気に複数行を選択できます。行数が多いときに便利です。

実例②:複数行の特定の列をコピーする

こんな場面で使える

CSV や表形式のデータから、特定の列だけを抜き出したいとき。

2024-01-15  Alice    5000
2024-01-16  Bob      3200
2024-01-17  Charlie  7800

金額の列(5000、3200、7800)だけをコピーして別の場所に貼り付けたい場合を考えます。

手順

  1. 「5000」の「5」にカーソルを移動する
  2. Ctrl + v で矩形ビジュアルモードを開始する
  3. l を3回(または 4l)押して横4文字分に広げる
  4. 2j で下2行まで選択する
  5. y でコピー(ヤンク)する
  6. 貼り付けたい場所に移動して p で貼り付け
Ctrl+v  # 矩形ビジュアルモード開始
4l      # 横に4文字選択
2j      # 下2行まで選択
y       # コピー
# (別の場所に移動)
p       # 貼り付け

✔ 豆知識

矩形ヤンクで取得した内容を p で貼り付けると、カーソル位置から縦に展開されます。表形式データの整形に重宝します。

実例③:複数行の同じ位置に文字を挿入する

矩形選択でもっとも驚かれる操作のひとつが、複数行に同時に文字を挿入することです。

こんな場面で使える

複数行の先頭に # を付けてコメントアウトしたいとき(実例①とは逆の操作)。

Before

export PATH=/usr/local/bin
export EDITOR=vim
export LANG=ja_JP.UTF-8

After(# を一括挿入)

#export PATH=/usr/local/bin
#export EDITOR=vim
#export LANG=ja_JP.UTF-8

手順

  1. 最初の行の先頭(e の位置)にカーソルを移動する
  2. Ctrl + v で矩形ビジュアルモードを開始する
  3. 2j で下2行まで選択する(列は1文字分のみでOK)
  4. I(大文字のアイ)を押す → 挿入モードになる
  5. # を入力する(画面には1行にしか見えないが気にしない)
  6. Esc を押す → すべての行に # が挿入される
Ctrl+v  # 矩形ビジュアルモード開始
2j      # 下2行まで選択
I       # 矩形挿入モード(大文字のI)
#       # 挿入したい文字を入力
Esc     # 確定(全行に反映される)

✔ 注意

I(大文字のアイ)を使います。i(小文字)でも動きますが、挿入位置の動作が微妙に異なります。矩形挿入では I が基本です。

応用:複数行の行末に文字を追加する

行の長さが揃っていないときでも、矩形選択の A(大文字エー)を使えば行末にまとめて追記できます。

apple
banana
cherry

これらの行末に (果物) を追加したい場合は、次の操作をします。

Ctrl+v  # 矩形ビジュアルモード開始
2j      # 3行分選択
$       # 行末まで選択を延ばす
A       # 行末への追記モード(大文字のA)
(果物)  # 追記する内容を入力
Esc     # 確定

結果:

apple(果物)
banana(果物)
cherry(果物)

✔ ポイント

$ で行末に選択を伸ばしてから A を使うのがコツです。行の長さが違っていても、それぞれの行末に正しく追記されます。

通常のビジュアルモードとの違いを整理する

モードキー選択の形向いている操作苦手な操作
文字選択v文字の流れ(連続した文字列)文の中の一部分をコピー・削除複数行の同じ位置を扱う
行選択V行ごとまるごと複数行の移動・削除・コピー行の一部だけを扱う
矩形選択Ctrl+v縦×横の四角形特定の列の一括編集・挿入・削除行をまたいで不規則な形を選ぶ

矩形選択で使えるコマンド一覧

選択中に使えるキー

キー動作
h / j / k / l選択範囲を左・下・上・右に広げる
$選択を行末まで広げる
0選択を行頭まで広げる
w / b単語単位で選択を広げる・縮める
数字 + j/k指定行数分まとめて選択(例:5j で5行下まで)

選択後に使える操作

キー動作補足
yコピー(ヤンク)矩形のまま保持。p で縦展開して貼り付け
d削除選択した矩形部分のみ削除
c変更(削除+挿入)削除後に入力モードへ
I矩形の左端に挿入Esc で全行に反映
A矩形の右端に追記Esc で全行に反映
r + 文字選択範囲の文字を一括置換すべて同じ文字に変わる
~大文字/小文字を反転英字のケース変換に便利
>インデントを追加選択行すべてにインデント
<インデントを削除選択行すべてからインデントを外す

小さく試してみよう(練習シナリオ)

練習1:先頭の記号を削除する

まずは削除の練習です。次のテキストをファイルに書いて試してみましょう。

- リスト項目1
- リスト項目2
- リスト項目3
- リスト項目4

先頭の - (ハイフンとスペース)を矩形選択で削除します。操作の流れは次のとおりです。

  • Ctrl+v で矩形選択を開始
  • 3j で下3行まで選択
  • l で右に1文字(スペースも含めて2文字分にしたければ ll
  • d で削除

練習2:数字の列を書き換える

item_A  price: 100
item_B  price: 200
item_C  price: 300

「100」「200」「300」をそれぞれ「999」に変えてみましょう。r のあとに文字を1つ入力すると、選択した矩形のすべてが同じ文字で置き換わります。3桁すべてが 9 になれば成功です。

  • Ctrl+v2j2lr9

練習3:行末にまとめて追記する

server1
server2
server3

行末に .local を追加してみましょう。

  • Ctrl+v2j$A.local と入力 → Esc

✔ うまくいかないときは?

Esc を押しても反映されない場合は、一度ノーマルモードに戻って(Esc を押して)やり直してみましょう。矩形挿入(I / A)は Esc を押した瞬間に全行へ反映されます。

よくある疑問と答え

ターミナルで Ctrl+v が効かないときは?

一部のターミナルやSSH環境では Ctrl+v がペーストに割り当てられていることがあります。その場合は Ctrl+q で同じ矩形選択モードに入れることがあります。また Vim なら :help visual-block で詳細を確認できます。

矩形選択で行ごとに違う文字を挿入したいときは?

矩形選択の IA では全行に同じ文字が入ります。行ごとに違う内容を入れたい場合は、マクロ(q)か置換(:s)を使うのが一般的です。

矩形選択中に誤操作してしまったら?

Esc でノーマルモードに戻り、もう一度 Ctrl+v からやり直します。gv を押すと直前の選択範囲を再選択できるので、選択中に誤操作したときに便利です。

まとめ|まとめて速く扱うための選択方法

✔ この記事で学んだこ

  • Ctrl + v で矩形ビジュアルモードに入り、縦×横の四角形範囲を選択できる
  • d で矩形削除、y で矩形コピー、I で矩形挿入、A で矩形追記
  • コメントアウト・解除、列データの抽出、行末への一括追記など実務的な場面で効果的
  • r で矩形内を同じ文字で一括置換、> / < でインデント操作も可能
  • Esc を押した瞬間に全行へ変更が反映される(挿入・変更操作時)

Ctrl + v は、ビジュアルモードを「見えて安心」から「まとめて速い」へと押し上げてくれる機能です。最初は少し不思議な感覚があるかもしれませんが、1〜2回練習すれば確実に手に馴染みます。

設定ファイルの一括コメントアウト、ログの特定列抽出、プログラムソースの行末追記……。「あの操作、矩形選択でできたな」と思える場面が増えてくると、vi での作業速度が一段と上がります。

次回予告

最後は、「黒板で整理する vi の全体像」を見ていきます。ここまでの操作を一度地図として見直すと、シリーズ全体がきれいにつながります。

あわせて読みたい

通常のビジュアルモードを先に固めたい方は、「vi ビジュアルモード」実践編もあわせてどうぞ。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

目次