Linuxサーバーにsshで接続して設定ファイルを直したいのに、使えるエディタがviやvimしかない——という場面は珍しくありません。viはUNIX/Linuxにほぼ標準搭載されている歴史あるテキストエディタで、vimはその上位互換として多くの環境で実際に動いています。マウスを使わずキーボードだけで開く・移動する・編集する・保存して終了するまでが完結します。この記事では、初心者向けにvi/vimの使い方を、起動方法から移動・削除・コピペ・検索置換・保存終了・vim限定の便利機能まで、実際のコマンド例つきで解説します。
viとは?vimとの違い
viは1976年に登場した、UNIX系OSにほぼ必ず搭載されているコマンドライン(CUI)のテキストエディタです。GUIを持たないサーバー環境やSSH接続時でも、追加インストールなしで確実に使えることが最大の強みです。
vimは「Vi IMproved(viを改良したもの)」の略で、viの上位互換にあたるエディタです。複数回のUndo/Redo、シンタックスハイライト、マクロ、プラグインなど多くの拡張機能を持ちます。現在では多くのLinuxディストリビューションでviと入力すると実体はvimが起動する(エイリアス設定されている)ため、普段は両者を意識せず同じ感覚で使えます。
ただし、Docker の軽量イメージ(Alpine Linuxなど)やレスキューモードでは、簡易版の本来のvi(busybox viなど)しか入っておらず、Undoが1回までしかできない、マクロや設定ファイルが使えないといった制限がある点は覚えておきましょう。
vimのインストール方法
多くのLinuxディストリビューションにはvi(実体はvim)が標準搭載されていますが、最小構成のサーバーなどでは入っていないこともあります。その場合は次のコマンドでインストールします。
sudo apt install vim:Debian/Ubuntu系sudo yum install vim(またはsudo dnf install vim):RHEL/CentOS/Fedora系
viの起動方法
vi ファイル名:指定したファイルを開く(存在しなければ新規作成扱いになる)vi:ファイル名を指定せずに起動し、無題のバッファを開くsudo vi /etc/ファイル名:root権限が必要な設定ファイルを編集する場合。権限の考え方はパーミッションとchmodの解説記事やsudoコマンドの使い方も参考にしてください
viの2つの基本モード
viを使いこなす最初のポイントは、モードの概念を理解することです。
- コマンドモード:起動直後のデフォルトモード。文字を入力する代わりに、カーソル移動・削除・コピー・保存などのコマンドを実行する
- インサートモード:実際に文字を入力・編集するモード。コマンドモードで
i・a・oのいずれかを押すと切り替わる
インサートモードからコマンドモードへ戻るには、Escキーを押します。「文字が入力できない」「勝手にカーソルが動く」と感じたら、まずEscキーでコマンドモードに戻ってから操作し直してください。
カーソル移動の基本コマンド
| コマンド | 動作 |
|---|---|
h / j / k / l |
カーソルをそれぞれ左・下・上・右に1文字分移動 |
w |
次の単語の先頭に移動 |
b |
前の単語の先頭に移動 |
0 |
行の先頭に移動 |
$ |
行の末尾に移動 |
1G(またはgg) |
ファイルの先頭に移動(ggはvim拡張) |
G |
ファイルの末尾に移動 |
:数字 |
指定した行番号へ移動(例::10で10行目へ) |
文字・行の削除コマンド
x:カーソル位置の1文字を削除dw:カーソル位置から単語の末尾まで削除dd:カーソル行を1行まるごと削除u:直前の操作を取り消す(Undo)
コピー&ペースト(ヤンク)コマンド
viではコピーのことを「ヤンク(yank)」と呼びます。
yy:カーソル行をヤンク(コピー)するp:ヤンクまたは削除した内容をカーソルの下(後ろ)に貼り付けるP:ヤンクまたは削除した内容をカーソルの上(前)に貼り付ける
行を削除するddもヤンクと同じ領域に内容を保存するため、ddの直後にpを押すと「行の移動」として使えます。
検索と置換
/検索したい文字列:カーソル位置より下方向に文字列を検索n:次の一致箇所へジャンプN:前の一致箇所へジャンプ:%s/置換前/置換後/g:ファイル全体で文字列を一括置換
保存して終了する方法
:w:上書き保存(終了はしない):q:変更がない状態で終了:wq(またはZZ):保存してから終了:q!:変更を保存せずに強制終了
「変更があるのに:qで終了しようとしてエラーになる」「読み取り専用ファイルで保存できない」といった具体的なケースと対処法は、vimで保存して終了する方法|:wq・:x・ZZの使い分けと注意点で実行例つきに解説しています。
行番号表示など便利な設定
:set number(または:set nu):行番号を表示する:set nonumber(または:set nonu):行番号表示を消す
vimでさらに使える発展的な機能
以下はviの上位互換であるvimで使える拡張機能です。busybox viなどの簡易版のviでは使えない場合があります。
- ビジュアルモード:
v(文字単位)・V(行単位)・Ctrl + v(矩形選択)で範囲選択してから、d(削除)やy(ヤンク)をまとめて実行できる - 置換モード:
Rを押すと、上書きしながら入力する置換モードになる(インサートモードのように挿入するのではなく既存の文字を置き換える) - 複数回のUndo/Redo:
uで何度も遡れて、Ctrl + rでRedoできる - ドットコマンド:直前の変更操作を
.キーで繰り返す - マクロ:
qaで記録開始、操作後にqで記録終了、@aで再生 - 画面分割:
:split(水平分割)や:vsplit(垂直分割)で複数ファイルを並べて編集できる - 設定ファイルとプラグイン:
.vimrcにカスタマイズを記述し、NERDTreeなどのプラグインで機能を拡張できる
よくある質問
Q. vimの使い方を最短で覚えるコツはありますか?
A. まず「コマンドモードでiを押して入力→Escで戻る→:wqで保存終了」の一連の流れだけ覚えれば実務で困りません。移動・削除・コピペは慣れてから少しずつ増やしていけば十分です。
Q. viとvimは何が違いますか?
A. viはUNIX標準の古典的なエディタ、vimはその上位互換です。基本コマンドは共通ですが、Undo回数やマクロ・プラグインなどの拡張機能はvimだけの機能です。
Q. 保存せずに終了したいときは?
A. コマンドモードで:q!と入力してEnterを押してください。
Q. コピーした行を別の場所に貼り付けるには?
A. コピーしたい行でyyを押し、貼り付けたい行に移動してp(下に貼り付け)またはP(上に貼り付け)を押します。
Q. 文字を入力しようとしても反映されません。
A. コマンドモードのままになっている可能性があります。iを押してインサートモードに切り替えてから入力してください。
おわりに
viは一見とっつきにくく感じますが、「コマンドモードとインサートモードを切り替える」という考え方さえつかめば、起動・移動・編集・保存終了までの一連の操作は驚くほどシンプルです。まずはこの記事で紹介した基本コマンドから試し、慣れてきたらvimの拡張機能にも挑戦してみてください。

コメント