vi/vimを初めて使ったとき、多くの方がこの壁にぶつかります。
viには「コマンドモード」と「インサートモード」の2つのモードがあり、
この切り替えを理解しないと、文字入力も保存も終了もできません。
この記事では、vi/vimのモード切り替えの仕組みから、
基本操作(i・a・o・ESC)、保存・終了(:wq・:q!)まで、
ひととおりの操作を実際のコマンド例で解説します。
【この記事でわかること】
・vi/vimには「コマンドモード」と「インサートモード」の2種類がある
・インサートモードへの切り替えはi・a・o・Oキーで行う
・ESCキーでコマンドモードに戻り、:wqで保存終了・:q!で破棄終了できる
・現在のモードはvimの画面下部の表示(-- INSERT --など)で確認できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
vi/vimのモードとは?なぜ2つのモードが存在するのか
viはもともとUNIX上で1970年代に開発されたテキストエディタです。当時のキーボードにはカーソルキーがなく、hjklキーでカーソル移動する設計でした。
文字を入力するキーとカーソル移動するキーを分けるために、「モード」という概念が生まれました。
現代でもLinuxサーバーの設定ファイル編集には必ずといっていいほどviまたはvimが使われます。
GUIが使えない環境でも確実に動作するため、サーバー管理者にとって必須のスキルです。
1. コマンドモード(Normal Mode)
viを起動した直後は必ずコマンドモードからスタートします。コマンドモードでは、カーソル移動・コピー・削除・検索・保存・終了などの操作を行います。
このモードでは、キーボードのアルファベットキーはコマンドとして解釈されます。
・コマンドモードでよく使うキー操作
h : 左に1文字移動 l : 右に1文字移動 j : 下に1行移動 k : 上に1行移動 dd : 1行削除(カット) yy : 1行コピー p : 貼り付け /文字列 : 前方検索 : : 最終行モード(保存・終了コマンドを入力するモード)に入る
2. インサートモード(Insert Mode)
インサートモードは、実際にテキストを入力するためのモードです。コマンドモードから特定のキーを押すことで切り替わります。
インサートモードに入ると、vimの画面下部に「-- INSERT --」と表示されます。
このモードでは、キーボードで入力した文字がそのままファイルに書き込まれます。
インサートモードへの切り替え:i・a・o・Oの違い
コマンドモードからインサートモードへ切り替えるキーは複数あります。どのキーを使うかによって、カーソル位置との関係が変わります。
| キー | インサートモードの開始位置 | 使い場面 |
|---|---|---|
i |
カーソルの直前(現在位置) | カーソル位置から入力したいとき(最もよく使う) |
a |
カーソルの直後(1文字後) | カーソルの次の文字から入力したいとき |
I(大文字) |
行の先頭 | 行の最初から入力したいとき |
A(大文字) |
行の末尾 | 行の最後に追記したいとき |
o(小文字) |
現在行の下に新しい行を挿入 | 次の行に新しい内容を追加したいとき |
O(大文字) |
現在行の上に新しい行を挿入 | 現在行の前に内容を挿入したいとき |
i、「行末に追記したい」場合は
A、「新しい行を追加したい」場合はoを使うことが多いです。コマンドモードへの戻り方:ESCキー
インサートモードからコマンドモードに戻るには、ESCキーを押します。画面下部の「-- INSERT --」表示が消えたらコマンドモードに戻っています。
ESCキーを押す癖をつけることが、vi/vimをスムーズに使うための最初のポイントです。
実際の操作フローをまとめると以下のようになります。
[コマンドモード(起動直後)] ↓ iキーを押す [インサートモード(-- INSERT -- 表示)] ↓ テキストを入力 [インサートモード(文字が入力される)] ↓ ESCキーを押す [コマンドモード(-- INSERT -- 消える)]
保存と終了の方法::wq・:q!・:w
ファイルの保存と終了は、コマンドモードから「:(コロン)」を入力して最終行モードに入った後に行います。コロンを押すと画面下部にカーソルが移動し、コマンドを入力できる状態になります。
1. 保存して終了する(:wq)
最もよく使うコマンドです。:wq # または :x
:w」が「書き込み(write)」、「:q」が「終了(quit)」の意味です。:xは変更がある場合のみ保存して終了するコマンドで、:wqと使い分けることもあります。2. 変更を保存せずに終了する(:q!)
誤って設定ファイルを書き換えてしまったときや、変更を破棄したいときに使います。:q! # ! は「強制的に」という意味。未保存の変更があっても強制終了する
:qだけ入力すると「保存されていない変更があります」という警告が出て終了できません。そのため変更を捨てるときは
:q!と!を必ずつける必要があります。3. 保存のみ行う(:w)
終了せずに内容だけ保存したいときに使います。:w # 現在のファイルに上書き保存 :w /tmp/backup.conf # 別名で保存(名前を付けて保存)
実践:viで設定ファイルを編集する手順
実際のサーバー作業でよく行う、設定ファイル編集の一連の流れを示します。1. viでファイルを開く
vi /etc/hostname # または vim(vimがインストールされている場合) vim /etc/hostname
RHEL系(CentOS、Rocky Linux)では
viコマンドで起動するのがvimの場合があります。2. カーソルを目的の場所に移動する
# hjklキーでカーソル移動 h : 左移動 j : 下移動 k : 上移動 l : 右移動 # または矢印キーでも移動可能(vimのみ) # カーソルキーが効かない場合はhjklを使う # 特定の文字列に移動する場合は検索を使う /変更したい文字列 # n : 次の一致箇所へ移動 # N : 前の一致箇所へ移動
3. インサートモードに切り替えて編集する
# iキーを押してインサートモードに切り替え i # 画面下部に「-- INSERT --」が表示されたことを確認 # テキストを入力または修正する # ESCキーでコマンドモードに戻る ESC
4. 保存して終了する
:wq # ファイルを保存してviを終了する
よく使うコマンドモードの操作(削除・コピー・ペースト)
インサートモードへの切り替え以外に、コマンドモードで知っておくべき基本操作を紹介します。1. 削除操作
x : カーソル位置の1文字を削除 X : カーソル位置の左の1文字を削除 dd : カーソル行全体を削除(カット) 3dd : カーソル行から3行を削除 dw : カーソル位置から次の単語の先頭まで削除 D : カーソル位置から行末まで削除
2. コピーと貼り付け
yy : カーソル行をコピー(ヤンク) 3yy : カーソル行から3行をコピー yw : カーソル位置から次の単語の先頭までコピー p : カーソルの次の行に貼り付け P : カーソルの前の行に貼り付け
3. アンドゥとリドゥ
u : 直前の操作を取り消す(アンドゥ) Ctrl+r : アンドゥを取り消す(リドゥ)※vimのみ
トラブルシュート:よくあるvi操作のトラブル
1. 「文字が入力できない」「コマンドが効かない」
最もよくあるトラブルです。まず現在のモードを確認してください。・コマンドモードにいる場合:画面下部に何も表示されていない(またはファイル名が表示されている)
・インサートモードにいる場合:画面下部に「-- INSERT --」と表示されている
文字を入力したい場合は
iキーを押してインサートモードへ切り替えてください。コマンドを実行したい場合はESCを押してコマンドモードに戻ってください。
2. 「Escを押しても反応しない」
Escキーを複数回押してみてください。深い操作(検索モードなど)に入っている場合は、Escを何度か押すことでコマンドモードに戻れます。
3. 「:wqが入力できない」「文字が変な場所に入力される」
コマンドモードに戻れていない状態で:を入力しようとしている可能性があります。まずESCキーを押してコマンドモードに戻り、その後
:wqと入力してください。4. 「Permission deniedでファイルが保存できない」
書き込み権限がないファイルを編集しようとしています。rootが所有するシステムファイルを編集する場合はsudoを使います。
sudo vi /etc/hostname # または sudo vim /etc/hostname
:w /tmp/hostname_backup # /tmpに一時保存してから、ターミナルでsudo mvやsudo cpで本来の場所へ移動する
5. 「viを終了できない、固まってしまった」
Ctrl+Zでviを一時停止してシェルに戻ることができます。# Ctrl+Z でviを一時停止(ターミナルに戻る) # その後、fg で再度viに戻ることができる fg # または kill %1 などで強制終了させる場合もある
vimの便利な設定(.vimrc)
vimはホームディレクトリの.vimrcファイルで設定をカスタマイズできます。サーバー作業の効率を上げる基本設定を紹介します。
# ~/.vimrc の基本設定例 syntax enable # シンタックスハイライトを有効にする set number # 行番号を表示する set tabstop=4 # タブ幅を4スペースにする set expandtab # タブをスペースに展開する set autoindent # 自動インデントを有効にする set hlsearch # 検索結果をハイライトする set ignorecase # 検索で大文字・小文字を区別しない set smartcase # 大文字を含む場合は区別する
.vimrcを作成するには、viで新しいファイルを開くだけです。vi ~/.vimrc
本記事のまとめ
vi/vimのコマンドモードとインサートモードの切り替え、保存と終了の方法をまとめます。| やりたいこと | コマンド・操作 |
|---|---|
| インサートモードに入る(カーソル位置) | i |
| インサートモードに入る(カーソルの後) | a |
| インサートモードに入る(行の先頭) | I(大文字) |
| インサートモードに入る(行の末尾) | A(大文字) |
| 下に新しい行を挿入してインサートモード | o |
| 上に新しい行を挿入してインサートモード | O(大文字) |
| コマンドモードに戻る | ESC |
| 保存して終了 | :wq |
| 変更を破棄して終了 | :q! |
| 保存のみ(終了しない) | :w |
| 1行削除 | dd |
| 1行コピー | yy |
| 貼り付け | p |
| 操作を取り消す | u |
最初は戸惑いますが、「コマンドモードとインサートモードの切り替え」と「:wqで保存終了」だけ覚えれば、
日々の設定ファイル編集はスムーズに行えるようになります。
vi/vimに慣れてきたら、次はシェルスクリプトを使った自動化にも挑戦してみてください。
systemctlとchkconfigコマンドでサービスを管理する方法や
tarコマンドでファイルをアーカイブ・圧縮する方法も合わせてご覧ください。
vi/vimのモード切替を体で覚えて、サーバー作業の効率を上げる
vimを自由に操れるようになると、SSHでサーバーに入ったままファイル編集・確認・保存がスムーズにできます。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:Zip形式で圧縮されたファイルから特定の文字列を含む行を抽出する方法|zgrepとzegrepの使い方
- この記事の属するカテゴリ:Linuxtips・テキスト処理へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます