Vim エディタの操作体系と主要コマンド完全ガイド

Vimのモード駆動型アーキテクチャ

Vimは伝統的なviエディタを継承・拡張した高機能なターミナルベースのテキスト編集ツールです。プログラミング支援機能に優れ、キーボードのみで完結する高速な操作体系が特徴的です。その核心は「モード」の概念にあり、入力状態に応じてキーボードの解釈を動的に切り替えます。

操作モードの分類と遷移

Vimは主に3つの状態から構成されます。

  • ノーマルモード:起動直後のデフォルト状態。押下されたキーはテキスト入力ではなく、編集コマンドやカーソル移動として解釈されます。
  • インサートモード:通常のテキストエディタと同様に文字を入力できる状態。改行や削除機能も利用可能です。
  • コマンドラインモード:画面最下行にプロンプトが表示され、ファイル保存・検索置換・環境設定などのマクロ操作を実行します。

モード切替の手順

任意のモードからノーマルモードへはEscキーで即時戻ります。インサートモードへの遷移には以下のキーが利用されます(カーソル位置の挙動が異なります)。

キーインサート時のカーソル配置
iカーソル直前の位置
aカーソル直後の位置
I行頭(先頭空白除く)
A行末
oカーソル行の直下に新規行を追加
Oカーソル行の直上に新規行を追加
R上書きモードへ移行(Escまで継続)

コマンドラインモードへはノーマルモードから:または/を押下します。モード間はEscを介してのみ安全に遷移できる点に注意が必要です。

ノーマルモード:カーソル制御とページング

右手をホームポジションに置いた状態で操作できるよう設計されています。

  • h j k l:左・下・上・右へ1文字ずつ移動。連打や前方に数字を付ける(例: 5j)ことで倍数移動が可能です。
  • w / b:単語単位で右へ / 左へジャンプ。
  • 0 / $:行頭 / 行末へ移動。
  • gg / G:ファイル先頭 / 最終行へ移動。15Gの形式で特定行へも指定可能。
  • Ctrl+f / Ctrl+b:1ページ下へ / 上へスクロール。
  • H / M / L:画面表示範囲の最上行 / 中央行 / 最下行の先頭へ移動。

テキスト操作:演算子とモーションの組み合わせ

Vimの編集は「何をするか(演算子)」と「どこを対象とするか(モーション)」を合成するパラダイムに従います。

操作コマンド例解説
削除dd, 3dd, d$, d0全行 / 指定行数 / 行末まで / 行頭までを消去
コピーyy, y$, y0ddと同様の範囲で内部バッファへ格納
貼り付けp, Pカーソル後 / 前に展開。行単位では1行下 / 1行上に挿入
修正c, cc, cw対象範囲を削除した直後にインサートモードへ移行
履歴管理u, Ctrl+r, .前操作取り消し / 取り消しを元に戻す / 直近の操作を反復実行

ビジュアルモードでの範囲選択

ノーマルモードからvを押すと文字単位の選択状態になります。カーソル移動で範囲を拡張し、y(コピー), d(削除), c(修正), gu(小文字化), gU(大文字化), > (字下げ追加)などのコマンドを実行できます。行単位選択はV、ブロック選択はCtrl+vで切り替えます。

コマンドラインモード(:プロンプト)

ファイルの永続化や正規表現検索置換には最下行の入力モードを活用します。

:w            // 現在のバッファをディスクへ保存
:w!           // 読み取り専用属性を無視して強制的に上書き
:w [ファイル名] // 別名として保存
:q            // 変更がない場合にのみ終了
:q!           // 未保存の変更を破棄して強制的に終了
:wq           // 保存後終了
:help [コマンド] // 内蔵ヘルプマニュアルの表示

環境設定と検索置換

:set number     // 行番号の常時表示を有効化
:set nonumber   // 行番号表示を無効化
:%s/検索語/置換語/gc // ファイル全体をスキャンし、ヒットごとに確認プロンプトを表示
:10,30s/^/#/g   // 10〜30行目に先頭から#を追加(コメントアウト例)
:10,30s/^#//g   // 10〜30行目の先頭#を削除(コメント解除例)

前方検索は/パターン、後方検索は?パターンで実行します。一致箇所にカーソルが移動した直後、nで次の一致箇所に、Nで逆方向の一致箇所に連続ジャンプできます。

インサートモードの操作特性とターミナルの挙動

インサートモードでは一般的なテキスト入力キーが有効ですが、Linuxターミナル環境特有の制御シーケンスに注意が必要です。

  • Ctrl+z:エディタをサスペンド(バックグラウンド化)します。復帰にはfgコマンドが必要です。テキストの取り消しには利用できません。
  • Ctrl+c:GUIアプリでのコピーではなく、プロセスの強制終了シグナル(SIGINT)を送ります。Vim実行中に押すとエディタ自体が閉じるため誤操作に注意。
  • クリップボード連携:ターミナル上ではCtrl+Shift+CCtrl+Shift+Vが標準の選択コピー/貼り付けとして機能します。これらはノーマルモードのy/pとは独立したシステムクリップボードを経由するため、カーソル位置にペーストされます。

モードの文脈を正しく把握し、キーバインドを目的に合わせて選択することで、画面切り替えなしで高速なコード編集が実現可能です。

タグ: Vim linux コマンドラインエディタ テキスト編集 モード駆動

7月2日 21:38 投稿