vi/vimの使い方入門:基本操作とコマンド一覧をマスター

コマンドリファレンス

Linuxサーバーにsshで接続して設定ファイルを直したいのに、使えるエディタがvivimしかない——という場面は珍しくありません。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を使いこなす最初のポイントは、モードの概念を理解することです。

  • コマンドモード:起動直後のデフォルトモード。文字を入力する代わりに、カーソル移動・削除・コピー・保存などのコマンドを実行する
  • インサートモード:実際に文字を入力・編集するモード。コマンドモードでiaoのいずれかを押すと切り替わる

インサートモードからコマンドモードへ戻るには、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/Redouで何度も遡れて、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の拡張機能にも挑戦してみてください。

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント