本記事の構成および論理分析には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-8After(# を削除した状態)
export PATH=/usr/local/bin
export EDITOR=vim
export LANG=ja_JP.UTF-8手順
- 削除したい最初の
#にカーソルを移動する Ctrl + vで矩形ビジュアルモードを開始するjを2回押して、下の2行まで選択を広げる(選択が3行分になる)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)だけをコピーして別の場所に貼り付けたい場合を考えます。
手順
- 「5000」の「5」にカーソルを移動する
Ctrl + vで矩形ビジュアルモードを開始するlを3回(または4l)押して横4文字分に広げる2jで下2行まで選択するyでコピー(ヤンク)する- 貼り付けたい場所に移動して
pで貼り付け
Ctrl+v # 矩形ビジュアルモード開始
4l # 横に4文字選択
2j # 下2行まで選択
y # コピー
# (別の場所に移動)
p # 貼り付け✔ 豆知識
矩形ヤンクで取得した内容を p で貼り付けると、カーソル位置から縦に展開されます。表形式データの整形に重宝します。
実例③:複数行の同じ位置に文字を挿入する
矩形選択でもっとも驚かれる操作のひとつが、複数行に同時に文字を挿入することです。
こんな場面で使える
複数行の先頭に # を付けてコメントアウトしたいとき(実例①とは逆の操作)。
Before
export PATH=/usr/local/bin
export EDITOR=vim
export LANG=ja_JP.UTF-8After(# を一括挿入)
#export PATH=/usr/local/bin
#export EDITOR=vim
#export LANG=ja_JP.UTF-8手順
- 最初の行の先頭(
eの位置)にカーソルを移動する Ctrl + vで矩形ビジュアルモードを開始する2jで下2行まで選択する(列は1文字分のみでOK)I(大文字のアイ)を押す → 挿入モードになる#を入力する(画面には1行にしか見えないが気にしない)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+v→2j→2l→r9
練習3:行末にまとめて追記する
server1
server2
server3行末に .local を追加してみましょう。
Ctrl+v→2j→$→A→.localと入力 →Esc
✔ うまくいかないときは?
Esc を押しても反映されない場合は、一度ノーマルモードに戻って(Esc を押して)やり直してみましょう。矩形挿入(I / A)は Esc を押した瞬間に全行へ反映されます。
よくある疑問と答え
- ターミナルで Ctrl+v が効かないときは?
-
一部のターミナルやSSH環境では
Ctrl+vがペーストに割り当てられていることがあります。その場合はCtrl+qで同じ矩形選択モードに入れることがあります。また Vim なら:help visual-blockで詳細を確認できます。 - 矩形選択で行ごとに違う文字を挿入したいときは?
-
矩形選択の
IやAでは全行に同じ文字が入ります。行ごとに違う内容を入れたい場合は、マクロ(q)か置換(:s)を使うのが一般的です。 - 矩形選択中に誤操作してしまったら?
-
Escでノーマルモードに戻り、もう一度Ctrl+vからやり直します。gvを押すと直前の選択範囲を再選択できるので、選択中に誤操作したときに便利です。
まとめ|まとめて速く扱うための選択方法
✔ この記事で学んだこ
Ctrl + vで矩形ビジュアルモードに入り、縦×横の四角形範囲を選択できるdで矩形削除、yで矩形コピー、Iで矩形挿入、Aで矩形追記- コメントアウト・解除、列データの抽出、行末への一括追記など実務的な場面で効果的
rで矩形内を同じ文字で一括置換、>/<でインデント操作も可能- Esc を押した瞬間に全行へ変更が反映される(挿入・変更操作時)
Ctrl + v は、ビジュアルモードを「見えて安心」から「まとめて速い」へと押し上げてくれる機能です。最初は少し不思議な感覚があるかもしれませんが、1〜2回練習すれば確実に手に馴染みます。
設定ファイルの一括コメントアウト、ログの特定列抽出、プログラムソースの行末追記……。「あの操作、矩形選択でできたな」と思える場面が増えてくると、vi での作業速度が一段と上がります。
次回予告
最後は、「黒板で整理する vi の全体像」を見ていきます。ここまでの操作を一度地図として見直すと、シリーズ全体がきれいにつながります。
あわせて読みたい
通常のビジュアルモードを先に固めたい方は、「vi ビジュアルモード」実践編もあわせてどうぞ。










