Vimのビジュアルモードを完全攻略|選択・編集・整形を自在に!

プログラミング・IT

Vimを使っているとき、「この部分だけ選択してコピーしたい」「複数の行を一気に整えたい」と思ったことはありませんか?

そんなときに便利なのが「ビジュアルモード」という機能です。

マウスを使わずに、キーボードだけで自由にテキストを選択したり編集したりできます。

この機能を覚えると、Vimでの作業がとても快適になりますよ。

この記事でわかること

  • ビジュアルモードの基本的な使い方
  • 3つのモードの違いと使い分け
  • 実際のプログラミングでの活用例
  • 作業効率を上げるコツとテクニック
スポンサーリンク

ビジュアルモードってなに?

ビジュアルモードとは

ビジュアルモードとは、Vimでテキストを選択するための特別なモードです。

まるでマウスでドラッグして選択するように、キーボードだけで文字や行を選択できます。

Vimの基本的なモード

Vimには主に3つのモードがあります:

ノーマルモード

  • 普段いるモード
  • カーソル移動やコマンド実行をする
  • Escキーで他のモードから戻れる

インサートモード

  • 文字を入力するモード
  • iキーで開始、Escで終了

ビジュアルモード

  • テキストを選択するモード
  • 今回の記事で詳しく説明するモード

ビジュアルモードでできること

基本的な操作

  • 文字や行の選択
  • 選択した部分のコピー・切り取り・貼り付け
  • 選択した部分の削除
  • 選択した部分の整形や変換

便利な使い方

  • 複数行を一度に編集
  • プログラムコードの整理
  • 文章の構造を整える
  • データの加工や変換

これらの操作をマウスなしで、すべてキーボードで行えるのがビジュアルモードの魅力です。

3つのビジュアルモードを理解しよう[

Vimには3種類のビジュアルモードがあり、それぞれ選択方法が異なります。

用途に応じて使い分けることで、効率的な編集ができます。

文字ビジュアルモード(v)

説明:文字単位でテキストを選択するモード

起動方法

v

基本的な使い方

  1. 選択したい文字の開始位置にカーソルを移動
  2. vキーを押してビジュアルモードに入る
  3. カーソルキー(h/j/k/l)で選択範囲を調整
  4. 必要な操作(コピー、削除など)を実行

カーソル移動のキー

h : 左に移動
j : 下に移動  
k : 上に移動
l : 右に移動

実例: 単語「Hello」を選択する場合

元のテキスト: Hello World
カーソル位置: H|ello World(|はカーソル)

1. vキーを押す
2. 右に4回移動(llll)
3. 「Hello」が選択される

行ビジュアルモード(V)

説明:行全体を選択するモード

起動方法

V

基本的な使い方

  1. 選択したい行にカーソルを移動
  2. Vキー(Shift + v)を押す
  3. 上下のカーソルキー(j/k)で選択行数を調整
  4. 必要な操作を実行

実例: 複数行を選択する場合

元のテキスト:
1. 最初の行
2. 二番目の行  
3. 三番目の行

1. 最初の行でVキーを押す
2. jキーを2回押す
3. 1〜3行目が行全体で選択される

ブロックビジュアルモード(Ctrl+v)

説明:矩形(四角形)の範囲を選択するモード

起動方法

Ctrl + v

基本的な使い方

  1. 選択したい範囲の左上角にカーソルを移動
  2. Ctrl + vキーを押す
  3. カーソルキーで矩形範囲を調整
  4. 必要な操作を実行

実例: 縦の列を選択する場合

元のテキスト:
name = "Alice"
age  = 25
city = "Tokyo"

1. "Alice"の"A"にカーソルを置く
2. Ctrl+vキーを押す
3. 下に2回、右に数回移動
4. 各行の値の部分が矩形で選択される

どのモードを使うべき?

文字ビジュアルモード(v)がおすすめの場面

  • 単語や文の一部を選択したいとき
  • プログラムの変数名や関数名を選択するとき
  • 細かい部分の編集をするとき

行ビジュアルモード(V)がおすすめの場面

  • 複数行を一度に操作したいとき
  • プログラムの関数全体を選択するとき
  • 文章の段落を移動・削除したいとき

ブロックビジュアルモード(Ctrl+v)がおすすめの場面

  • 表やデータの列を編集するとき
  • 複数行の同じ位置に文字を追加したいとき
  • プログラムのインデントを揃えるとき

次の章では、実際にプログラミングでよく使う操作例を見ていきましょう。

実践的な活用例とコマンド

基本的な操作コマンド

ビジュアルモードで選択した後に使える基本的なコマンドを覚えましょう。

コピーと貼り付け

y : 選択範囲をコピー(yank)
p : カーソル位置に貼り付け(put)

削除

d : 選択範囲を削除(delete)
x : 選択範囲を切り取り

文字の変換

gU : 選択範囲を大文字に変換
gu : 選択範囲を小文字に変換
~ : 大文字と小文字を切り替え

整形

= : 選択範囲をインデント整形
> : 選択範囲を右にインデント
< : 選択範囲を左にインデント

実践例1:複数行のコメントアウト

説明:プログラムコードの複数行を一度にコメントアウトする

手順

  1. コメントアウトしたい最初の行にカーソルを移動
  2. 行ビジュアルモード(V)で複数行を選択
  3. 置換コマンドで行頭に#を追加

コマンド例

# 元のコード
def hello():
    print("Hello")
    print("World")

# 手順
1. def hello():の行でVキーを押す
2. jjで3行選択
3. :s/^/#/と入力してEnter

# 結果
#def hello():
#    print("Hello")  
#    print("World")

コマンドの意味

  • : : コマンドラインモードに入る
  • s/^/#/ : 行頭(^)を#に置換する
  • 選択範囲にのみ適用される

実践例2:列の先頭に文字を一括挿入

説明:複数行の同じ位置に文字を一度に追加する

手順

  1. 挿入したい位置の最初の行にカーソルを移動
  2. ブロックビジュアルモード(Ctrl+v)で縦に選択
  3. Iキーで挿入モードに入り、文字を入力
  4. Escキーで全ての行に適用

コマンド例

# 元のコード
console.log("test1");
console.log("test2");
console.log("test3");

# 手順
1. 最初のcの位置でCtrl+vキーを押す
2. jjで3行の縦列を選択
3. Iキーを押す
4. //を入力
5. Escキーを押す

# 結果  
//console.log("test1");
//console.log("test2");
//console.log("test3");

実践例3:インデントの調整

説明:プログラムのインデント(字下げ)を整える

手順

  1. 整形したい範囲を選択
  2. =キーで自動整形、または>/<キーで手動調整

コマンド例

# 元のコード(インデントがばらばら)
if True:
print("Hello")
if False:
print("World")

# 手順
1. Vで全体を選択
2. =キーで自動整形

# 結果
if True:
    print("Hello")
if False:
    print("World")

実践例4:データの列操作

説明:表やCSVデータの特定の列を操作する

手順

  1. ブロックビジュアルモードで列を選択
  2. 必要に応じてコピー、削除、置換を実行

コマンド例

# 元のデータ
名前,年齢,都市
田中,25,東京
佐藤,30,大阪
鈴木,22,名古屋

# 年齢の列だけ選択する場合
1. 25の2にカーソルを置く
2. Ctrl+vでブロック選択開始
3. jjで下に移動、lで右に移動して列全体を選択
4. yでコピー、または必要な操作を実行

実践例5:複数行の一括編集

説明:複数行の同じ部分を一度に変更する

手順

  1. 変更したい部分をブロック選択
  2. cキーで変更モードに入る
  3. 新しい文字を入力
  4. Escキーで全ての行に適用

コマンド例

# 元のコード
let name1 = "Alice";
let name2 = "Bob";  
let name3 = "Carol";

# letをconstに変更したい場合
1. 最初のletのlにカーソルを置く
2. Ctrl+vでブロック選択
3. jjlで3行のletを選択
4. cキーを押す
5. constと入力
6. Escキーを押す

# 結果
const name1 = "Alice";
const name2 = "Bob";
const name3 = "Carol";

これらの例を参考に、実際のプログラミング作業で活用してみてください。

便利なテクニックとコツ

選択範囲の調整テクニック

選択の開始点と終了点を切り替える

説明:選択中に開始点と終了点を入れ替えて、選択範囲を調整しやすくする

コマンド

o

使用例

# 選択を開始した後、反対側から調整したいとき
1. vで選択開始
2. 右に移動して選択
3. oキーを押す
4. 開始点が現在のカーソル位置に移動
5. 反対方向に選択を調整可能

直前の選択範囲を再選択

説明:最後に選択した範囲をもう一度選択する

コマンド

gv

使用例

# 操作を間違えた場合や、同じ範囲に別の操作をしたいとき
1. 範囲を選択して何か操作を実行
2. gvキーで同じ範囲を再選択
3. 別の操作を実行

文字変換のテクニック

大文字・小文字の変換

説明:選択した文字の大文字・小文字を変換する

コマンド

gU : 大文字に変換
gu : 小文字に変換  
~  : 大文字と小文字を切り替え

使用例

# 元のテキスト: Hello World
1. vで"Hello"を選択
2. gUキーを押す
# 結果: HELLO World

# 元のテキスト: HELLO World  
1. vで"HELLO"を選択
2. guキーを押す
# 結果: hello World

検索と組み合わせたテクニック

検索結果を選択に活用

説明:検索機能と組み合わせて効率的に選択する

コマンド例

# 検索して選択
/pattern  : patternを検索
n         : 次の検索結果へ
N         : 前の検索結果へ

使用例

# 特定の単語から次の単語まで選択したい場合
1. /functionで"function"を検索
2. vで選択開始
3. nで次の"function"に移動
4. 範囲が選択される

マーク機能との組み合わせ

マークを使った範囲選択

説明:マーク機能と組み合わせて離れた位置への選択を効率化

コマンド

ma    : 現在位置をマーク'a'として記録
`a    : マーク'a'の位置に移動
'a    : マーク'a'のある行の先頭に移動

使用例

# 離れた位置までの選択
1. 選択開始位置でmaキーを押す(マーク設定)
2. 別の場所に移動
3. v`aで選択開始位置から現在位置まで選択

効率的な編集のためのワークフロー

1. 計画を立てる

  • どの範囲を選択したいか明確にする
  • どのビジュアルモードが適切か判断する
  • 実行したい操作を決める

2. 適切なモードを選択

  • 文字単位:v
  • 行単位:V
  • ブロック単位:Ctrl+v

3. 効率的な移動方法を使う

  • w/b:単語単位の移動
  • f/F:文字検索での移動
  • /:パターン検索での移動

4. 選択後の操作を覚える

  • よく使うコマンドを体で覚える
  • 複数のコマンドを組み合わせる

初心者が陥りやすい注意点

選択モードの間違い

  • 行全体を操作したいのに文字モード(v)を使う
  • ブロック操作が必要なのに行モード(V)を使う

解決方法:目的に応じてモードを使い分ける習慣をつける

選択範囲の見失い

  • 長い選択をしているうちに範囲がわからなくなる

解決方法:oキーでの開始点切り替えやgvでの再選択を活用

コマンドの実行タイミング

  • 選択中でないのにコマンドを実行する
  • ビジュアルモードから抜けてしまう

解決方法:画面下部のモード表示を確認する習慣をつける

これらのテクニックを覚えることで、Vimでの編集作業が格段に効率的になります。

応用編:より高度な活用方法

正規表現と組み合わせた選択

説明:検索パターンを使って複雑な条件でテキストを選択・置換する

基本的な正規表現パターン

^     : 行の開始
$     : 行の終了  
.     : 任意の一文字
*     : 直前の文字が0回以上
\+    : 直前の文字が1回以上
[abc] : a、b、cのいずれか一文字
\d    : 数字
\w    : 英数字とアンダースコア

実践例:コメント行の一括削除

# 元のコード
# これはコメントです
def hello():
    # ここもコメント
    print("Hello")
# 最後のコメント

# 手順
1. :g/^#/dと入力
2. 行頭が#で始まる行をすべて削除

# 結果
def hello():
    print("Hello")

マクロとビジュアルモードの組み合わせ

説明:繰り返し操作をマクロに記録して、ビジュアル選択と組み合わせる

基本的なマクロコマンド

qa    : マクロの記録開始(レジスタa)
q     : マクロの記録終了
@a    : マクロaを実行
@@    : 最後のマクロを再実行

実践例:複数行の書式統一

# 元のコード(書式がバラバラ)
function test1(){
function test2() {
function   test3()   {

# マクロで書式を統一
1. qaで記録開始
2. 最初の行で書式を修正する操作を記録
3. qで記録終了
4. 残りの行をVで選択
5. :normal @aで選択範囲に適用

# 結果(書式が統一される)
function test1() {
function test2() {
function test3() {

外部コマンドとの連携

説明:選択した範囲を外部のコマンドやプログラムで処理する

基本的なコマンド

!command : 選択範囲を外部コマンドで処理

実践例:JSONの整形

# 元のJSON(一行にまとまっている)
{"name":"Alice","age":25,"city":"Tokyo"}

# 手順
1. vで全体を選択
2. !python -m json.toolと入力

# 結果(整形されたJSON)
{
    "name": "Alice",
    "age": 25,
    "city": "Tokyo"
}

実践例:行のソート

# 元のリスト
banana
apple
cherry

# 手順
1. Vで全体を選択
2. !sortと入力

# 結果
apple
banana
cherry

プラグインでの機能拡張

説明:ビジュアルモードを強化するプラグインの活用

おすすめプラグイン

vim-surround:選択範囲を括弧や引用符で囲む

# 選択した"Hello"を括弧で囲む
1. vで"Hello"を選択  
2. S(を入力
# 結果: (Hello)

vim-commentary:コメントアウトの切り替え

# 選択した範囲のコメントを切り替え
1. Vで複数行選択
2. gcを入力
# コメントの追加/削除が切り替わる

vim-multiple-cursors:複数箇所の同時編集

# 同じ単語を複数箇所で同時編集
1. 単語の上でCtrl+nを押す
2. 次の同じ単語に移動してCtrl+n
3. 同時に編集可能

ファイル間での操作

説明:複数のファイル間でビジュアル選択を活用する

基本的なファイル操作

:e filename  : ファイルを開く
:split       : 画面を水平分割
:vsplit      : 画面を垂直分割
Ctrl+w w     : ウィンドウ間の移動

実践例:ファイル間でのコピー&ペースト

# 手順
1. ファイル1でvで範囲選択
2. yでコピー
3. :e file2.txtで別ファイルを開く
4. pで貼り付け

# または分割画面で
1. :vsplitで画面分割
2. :e file2.txtで右側に別ファイル
3. 左側で選択・コピー
4. Ctrl+w wで右側に移動
5. 貼り付け

設定のカスタマイズ

説明:vimrcファイルでビジュアルモードの動作をカスタマイズ

便利な設定例

" ビジュアルモードでの検索を強化
vnoremap // y/<C-R>"<CR>

" 選択範囲の文字数を表示
set showcmd

" ビジュアルモードでのインデントを維持
vnoremap < <gv
vnoremap > >gv

" ペーストで選択範囲を置換(元の内容は保持)
vnoremap p "_dP

設定の説明

  • //:選択した文字で検索実行
  • showcmd:選択中の文字数表示
  • < >gv:インデント後も選択を維持
  • p "_dP:ペースト時に元の内容を保持

これらの応用技術を覚えることで、Vimのビジュアルモードをさらに効果的に活用できるようになります。

まとめ:ビジュアルモードでVimを使いこなそう

重要なポイントをおさらい

3つのビジュアルモード

  • 文字モード(v):単語や文の一部を選択
  • 行モード(V):行全体を選択、複数行の一括操作
  • ブロックモード(Ctrl+v):矩形選択、縦の列操作

基本的な操作コマンド

  • コピーy(yank)
  • 切り取りd(delete)またはx
  • 貼り付けp(put)
  • 大文字変換gU
  • 小文字変換gu
  • インデント>(右)、<(左)、=(自動整形)

便利なテクニック

  • 選択調整oで開始点と終了点を切り替え
  • 再選択gvで直前の選択範囲を復元
  • 検索連携/で検索してから選択範囲を調整

実践でよく使う操作パターン

プログラミングでの活用

  1. 複数行コメントアウトVで選択 → :s/^/#/
  2. インデント整理Vで選択 → =
  3. 変数名の一括変更Ctrl+vで列選択 → cで変更
  4. import文の整理Vで選択 → !sort

文書編集での活用

  1. 段落の移動Vで段落選択 → dで切り取り → pで貼り付け
  2. リストの整理:複数行選択 → >でインデント調整
  3. 大文字小文字の統一:選択 → gUまたはgu

よくある間違いと解決方法

問題:選択モードを間違える

  • 症状:思ったように選択できない
  • 解決:目的に応じてv/V/Ctrl+vを使い分ける

問題:選択範囲がわからなくなる

  • 症状:長い選択で現在の範囲が不明
  • 解決:oキーで開始点を切り替えて確認

問題:操作を間違える

  • 症状:意図しない変更をしてしまう
  • 解決:uキーでアンドゥ、gvで再選択

問題:コマンドが効かない

  • 症状:選択後にコマンドが実行されない
  • 解決:ビジュアルモード中であることを確認

コメント

タイトルとURLをコピーしました