Vimの基礎知識

【Vimの基礎知識】viとvimの違い|現場で覚えるべきポイント

「viとvimって、結局どう違うの?」Linuxを触り始めると必ず耳にする疑問です。

現場のサーバーで最低限入っているのは「vi」であることが多いですが、普段の開発環境では「vim」を使うのが一般的です。両者は同じコマンドで起動でき、基本的な編集操作は共通していますが、実際に作業をしてみると差がはっきり見えてきます。

検索や置換、シンタックスハイライト、ウィンドウ分割など、vimならではの便利な機能は日常の作業効率を大きく変えます。

反対に、viしか入っていない環境に遭遇すると「使えるはずの機能が動かない」という戸惑いが起こりやすいのも事実です。

この記事では、両者の違いを整理しながら、実務でどのように覚えておくべきかを具体的に紹介していきます。

viは「どのUNIX/Linuxにも必ずある最小限の標準エディタ」、vimは「viを拡張して開発効率を高める進化版エディタ」 です。

Vimの基礎知識

🟢 Vimの基礎知識
📌 Linuxで必ず触れるテキストエディタの入門から応用までを体系化
 └─【Vimの基礎知識】入門から応用までを体系化した学習ロードマップ
   ├─ 入門編(初心者向け)
   | ├─ 【Vimの基礎知識】ゼロから始めるVim入門とモード終了、コマンド基本操作
   | ├─ 【Vimの基礎知識】テキスト編集の基本操作(挿入・削除・移動) 
   | ├─ 【Vimの基礎知識】viとvimの違い|現場で覚えるべきポイント
   | ├─ 【Vimの基礎知識】VimとEmacsの違い|Linux現場で使われるエディタの選び方
   | └─ 【Vimの基礎知識】主要コマンド一覧|移動・編集・検索・コピーモード切替の早見表
   ├─ 活用編(中級者向け)
   | ├─ 【Vimの基礎知識】検索・置換・コピー・ペーストの操作まとめ
   | ├─ 【Vimの基礎知識】マウス不要!カーソルを乗せたら勝ち確定|ビジュアルモード
   ├─ 実践編(実務で役立つ)
   | ├─ 【Vimの基礎知識】Vimで複数ファイルを同時編集する方法とウィンドウ分割の基本
   | ├─ 【Vimの基礎知識】外部コマンド&シェル連携でVimを超実用ツールへ進化
   ├─ 応用編(上級者向け)
   | ├─ 【Vimの基礎知識】マクロを活用した自動編集テクニック
   | ├─ 【Vimの基礎知識】正規表現を使った高度なテキスト編集
   └─ 設定編(カスタマイズ)
     ├─【Vimの基礎知識】Vimを使いこなす基礎:.vimrcで快適な開発環境を構築する方法
     └─【Vimの基礎知識】VSCodeでVimを使う方法|GUIで再現するVim操作

viとvimの基本概要

Linuxの現場で最もよく利用されるテキストエディタがviとvimです。

名前が似ているため混同されやすいですが、実際には役割と機能に違いがあります。

viはUNIXの時代から標準搭載されてきた軽量なエディタであり、追加インストールなしにどの環境でも使えることが最大の強みです。

一方、vimは「Vi IMproved」の略称で、viを基盤に数多くの機能を拡張した進化版です。違いを理解しておくことで、運用や開発の現場で混乱せずに作業を進められます。

起動と基本操作(共通部分)

viもvimも、起動するとまずノーマルモードで開かれます。この状態では直接文字を入力することはできません。 新規ファイルを開く場合は次のように表示されます。

vi sample.txt

【出力例:】(対象ファイルが新規ファイルの場合)

"sample.txt" [New File]

【出力例:】(対象ファイルが既存ファイルの場合)

"existing.txt" 5L, 120B

既存ファイルを開いた場合は行数とバイト数が表示されます。また、ノーマルモードから挿入モードに切り替えるには、次のように「i」を入力します。

i

【出力例:】

-- INSERT --

これらの操作はviとvimで共通しており、学習の最初に必ず押さえておくべき基本です。

viの位置づけと役割

viは最小限の機能に限定された標準エディタです。

サーバーの緊急対応や最小構成のシステム環境でも確実に利用できるため、管理者にとって必須のツールです。

色分けや高度な編集機能は持たない一方で、動作が軽く、シンプルな操作でファイル編集を行える点が特徴です。

vimが追加した機能と進化の背景

vimはviを拡張し、開発や運用の効率を大きく高めるための機能を備えています。単に「viの代替」ではなく、現場で快適に作業できるよう多くの改良が加えられています。

代表的な追加機能には、以下のようなものがあります。

代表的な追加機能

  • シンタックスハイライトによる色分け表示
  • 強化された検索・置換機能(ハイライト表示や正規表現の拡張)
  • 複数ファイルを同時に扱えるウィンドウ分割やタブ機能
  • プラグインによる柔軟な機能拡張

これらの機能により、同じコマンド操作でもvimでは結果が視覚的にわかりやすく表示されます。特に構文の色分けや検索結果の強調表示は、作業ミスを減らし効率的に編集できる大きなメリットとなっています。

viとvimの違いの整理

共通操作を踏まえたうえで、両者の差分を整理すると以下のようになります。

機能 vi vim
起動直後 ノーマルモードで開始、挿入はiで切替 同じ
検索 /文字列で検索(強調表示なし) /文字列で検索(該当箇所をハイライト)
置換 :%s/old/new/g (動作はするが視認性は低い) :%s/old/new/g (色分け表示などで確認しやすい)
ウィンドウ分割 環境によっては不可 :split / :vsplit が利用可能
拡張性 基本操作のみ プラグインなどで柔軟に拡張可能

viとvimの基本操作の違い

viはUNIX系システムに標準で搭載されるテキストエディタで、最小限の機能に特化しています。v

imはそのviを拡張したエディタであり、より便利な機能が追加されています。両者は基本的な操作体系を共有していますが、表示やサポート機能に差があります。ここではviを基準に説明し、vimは差分のみを記載します。

起動と終了

エディタを使う最初のステップは、ファイルを開いて終了する流れを理解することです。

viもvimもノーマルモードで起動しますが、新規ファイルと既存ファイルでは起動時の表示が異なります。また、編集を終える際には必ず正しい終了コマンドを知っておく必要があります。

ここではviを基準に、vimの差分を明示しながら起動と終了の基本を確認します。

操作vivim
起動コマンド(新規ファイル)vi targetvim target(表示が色付きや強調される場合あり)
起動コマンド(既存ファイル)vi targetvim target(色や強調表示あり)
保存コマンドw同じ
終了コマンド(保存しない):q同じ
終了コマンド(保存する):wq同じ
強制終了コマンド(保存しない):q!同じ

起動コマンド(新規ファイル)

vi sample.txt

【出力例:】新規ファイルを開いた場合は [New File] と表示されます。

"sample.txt" [New File]

起動コマンド(既存ファイル)

vi existing.txt

【出力例:】 既存ファイルを開いた場合は次のように行数とバイト数が表示されます。

"existing.txt" 5L, 120B

保存コマンド

変更内容を保存します。(ファイルは終了しない)

:w

終了コマンド

[ 変更がなければ終了](変更があるとエラーメッセージを出して終了できない。)

:q

[ 変更内容をファイルへ保存して終了 ]

:wq

[ 強制終了](変更内容を破棄して強制的に終了)

:q!

【vimとの差分】環境によってはステータス行の表示が色分けされたり、強調されるなど、メッセージの視認性が高くなっています。

コピーと貼り付け

コピーした内容をカーソル位置の下に貼り付けます。

[ カーソル行をコピー ]

yy

[ ペースト]

p

【vimとの差分】 vimでは操作結果がステータス行にわかりやすく表示され、行コピーなどの確認が容易です。

検索と置換

ファイル全体の 文字列"localhost" を "127.0.0.1" へ置換します。

:%s/localhost/127.0.0.1/g

置換後、カーソルが次の "localhost" に移動(viではハイライトなし)

:%s/localhost/127.0.0.1/g の意味

ファイル全体で「localhost」を「127.0.0.1」に一括置換します。

置換コマンドの内訳

  • :コマンドラインモード
  • % 全行対象
  • s 置換
  • g 行内すべて

実行すると「12 substitutions on 8 lines」のように置換件数が表示されます。

応用例

  • 件数確認だけ → :%s/localhost/127.0.0.1/n
  • 対話で確認 → :%s/localhost/127.0.0.1/gc

【vimの差分】 vimは検索対象がハイライト表示され、置換では色付きで結果が表示されるため、どこが変更されたかが一目でわかります。

コマンド互換性と追加機能

viとvimは基本的な編集操作において互換性を持っており、起動・終了、挿入、コピー&ペースト、検索といったコマンドは共通しています。

そのため、viを使い慣れている方であれば、vimを操作しても戸惑うことはほとんどありません。

ただし、vimには拡張機能が数多く追加されており、より効率的な編集が可能です。

代表的な追加機能には以下があります。

代表的な追加機能

  • 検索結果のハイライト表示(viでは検索のみで強調表示はされない)
  • 高度な置換機能(正規表現の拡張など)
  • ウィンドウ分割(:split / :vsplit で複数ファイルを同時表示可能)
  • プラグインによる機能拡張やカスタマイズ性の向上

なお、環境によっては「vi」というコマンドが実際にはvimへのリンクになっている場合があります。その場合、表向きはviを操作しているようでも、内部的にはvimの機能が利用できるため、分割コマンドやハイライトが動作することがあります。

一方で純粋なvi実装しか存在しない環境では、これらの拡張機能は使えません。

この違いを理解しておくことで、保守作業や開発環境の切り替え時に「なぜコマンドが通らないのか」という混乱を防ぐことができます。

機能vivim
検索/文字列で検索(結果表示のみ)/文字列で検索し、該当箇所をハイライト
置換:%s/old/new/g同じだが強調表示付きで結果確認が容易
ウィンドウ分割実装によっては不可:split / :vsplit が利用可能
プラグイン利用不可豊富な拡張機能を追加可能

vimのウィンドウ分割

vimには1つの画面を複数に分割して複数のファイルを同時に編集できる「ウィンドウ分割」機能があります。

これはviには存在しないvim独自の機能であり、システム管理やプログラミングの現場で作業効率を大きく高めます。

たとえば、設定ファイルとログを並べて確認したり、ソースコードとドキュメントを同時に表示したりと、実務で役立つ場面が非常に多いです。

ここでは実際に操作を行い、出力結果を確認しながらウィンドウ分割の基本を整理します。

分割前に基準となるファイルを開く

基準となる main.txt を開きます。

vim main.txt

【出力例:】

メインファイルの確認用テキスト
上段ウィンドウに表示されていることを確認します。
行番号の有無にかかわらず内容が見分けられます。
この文書は分割表示の動作確認だけに使います。
以上
"main.txt" 6L, 255B

この段階では、画面全体に main.txt の内容が表示されます。

上下に分割して別ファイルを開く

次に、sub.txt を下段に表示させます。

:split sub.txt

【出力例:】画面は上下に分割され、上段に sub.txt、下段に main.txt が表示されます。

サブファイルの確認用テキスト
下段ウィンドウに表示されていることを確認します。
上段と下段を比較して表示が切り替わっていることを理解します。
この文書も分割表示の確認だけに使います。
以上
sub.txt
----------------------------------------------------------------------------------

メインファイルの確認用テキスト
上段ウィンドウに表示されていることを確認します。
行番号の有無にかかわらず内容が見分けられます。
この文書は分割表示の動作確認だけに使います。
以上
"main.txt" 6L, 255B
"sub.txt" 5L, 275B

→ 現在のウィンドウの「上」に新しいウィンドウを作成し、そのファイルを開きます。
もともと開いていたファイルは「下」に移動します。

左右に分割して別ファイルを開く

左右に分割する場合は `:vsplit` を使用します。

:vsplit sub.txt

【出力例:】画面は左右に分割され、左に sub.txt、右に main.txt が表示されます。

サブファイルの確認用テキスト
下段ウィンドウに表示されていることを確認します。
上段と下段を比較して表示が切り替わっていることを理解します。 この文書も分割表示の確認だけに使います。
以上
"sub.txt" 5L, 275B

メインファイルの確認用テキスト
上段ウィンドウに表示されていることを確認します。
行番号の有無にかかわらず内容が見分けられます。
この文書は分割表示の動作確認だけに使います。
以上
"main.txt" 6L, 255B

→ 現在のウィンドウの「左」に新しいウィンドウを作成し、そのファイルを開きます。
もともと開いていたファイルは「右」に移動します。

分割ウィンドウ間の移動

複数のウィンドウを開いた状態では、カーソルを移動して編集対象を切り替える必要があります。

基本的に Ctrl-w のあとに方向キー(h, j, k, l)を押す だけです。

これは通常のカーソル移動(h=左、j=下、k=上、l=右)と同じ対応になっているため、直感的に覚えやすいのが特徴です。

以下のコマンドを使います。

操作キー動作内容【出力例:】
Ctrl-w w次のウィンドウへ移動カーソルが sub.txt 側へ移動
Ctrl-w h左のウィンドウへ移動sub.txt → main.txt にカーソル移動
Ctrl-w l右のウィンドウへ移動main.txt → sub.txt にカーソル移動
Ctrl-w k上のウィンドウへ移動main.txt(下段) → sub.txt(上段)
Ctrl-w j下のウィンドウへ移動sub.txt(上段) → main.txt(下段)

このように、キー操作を使い分けることで複数のファイルを行き来しながら効率的に編集できます。

ウィンドウ分割の活用ポイント

ウィンドウ分割を使うと、以下のような利点があります。

ウィンドウ分割のメリット

  • エラーログと設定ファイルを同時に確認しながら修正できる
  • ソースコードとマニュアルを左右に並べて効率的に作業できる
  • 複数ファイルの内容を比較しながら編集できる 

さらに、分割したウィンドウは :q で閉じることができ、元の1画面に戻すことも可能です。

実務で役立つvimの機能

vimは単なるエディタにとどまらず、現場での作業効率を飛躍的に高めるツールです。特に運用や開発で多用する場面では、時間短縮とミス防止に直結します。

ここでは、実務で役立つ代表的な機能を紹介します。

シンタックスハイライト

プログラムやスクリプトを編集しているときに、キーワードやコメントがすべて同じ色で表示されると非常に読みにくく、ミスに気づきにくくなります。

vimのシンタックスハイライトを有効化すると、予約語・文字列・コメントが自動的に色分けされ、可読性が飛躍的に向上します。

結果として修正箇所をすぐに見つけられ、トラブルの早期解決にもつながります。

vim sample.sh

【出力例:】

通常のテキストではすべて同じ色ですが、vimでシンタックスハイライトを有効にすると、#!/bin/bash や if がキーワード色に、コメント行が灰色に、文字列が緑色に表示されます。

これによりスクリプトの構造を視覚的に理解でき、記述ミスを未然に防ぐ効果があります。 シンタックスハイライトを有効化するには以下を実行します。

:syntax on

【出力例:】

syntax highlighting enabled

一度設定すれば、以降すべてのファイルで自動的に色分けが反映され、日常的な作業効率が大きく向上します。

マルチウィンドウ・タブ機能

vimは一つのファイルを開くだけではなく、同じファイルの別の位置を同時に見たり、複数ファイルを並べて編集したりできます。これにより、ソースコードの定義と呼び出し箇所を比較したり、ログを見ながらスクリプトを修正するような実務が効率的に進められます。

マルチウィンドウ(上下分割)

ファイルの冒頭と末尾を同時に見たいとき、スクロールを繰り返すのは時間の無駄です。`:split` を使うと上下に画面が分かれ、同じファイルを別々の位置で同時に確認できます。

:split

【出力例:】

これにより、関数の定義を上段で確認しながら、下段で処理の流れを追うといった作業が可能になります。ウィンドウ間のカーソル移動は j(下のウィンドウへ)、 k(上のウィンドウへ)で行えます。

マルチウィンドウ(左右分割)

コードの定義と利用箇所を横並びで確認したいときは、`:vsplit` が便利です。左右に画面を分けて表示できるため、比較作業が格段にやりやすくなります。

:vsplit

【出力例:】

例えば左側で変数定義を確認し、右側でそれを使っている処理を追うことができます。ウィンドウ間のカーソル移動は h(左のウィンドウへ)、 l(右のウィンドウへ)で行えます。

マルチウィンドウ(タブ分割)

複数のファイルを同時に扱う場合、ウィンドウ分割よりもタブ分割が便利です。タブを使えばファイルごとに独立したビューを持てるため、大規模プロジェクトやログファイル併用時に重宝します。 新しいタブにファイルを開くには以下を実行します。

:tabnew sample.py

【出力例:】

タブ間の移動は以下で行います。(前のタブへ移動「gt」)

gt

【出力例:】

タブ間の移動は以下で行います。(次のタブへ移動「gT」)

gT

【出力例:】

下記のコマンドでもタブ移動が可能です。

:tabn 2

【出力例:】

vimで複数ファイルをタブ表示した際に活用できる、基本的なタブ移動コマンドを一覧化した表です。

コマンド動作
:tabn次のタブへ移動
:tabp前のタブへ移動
:tabn 22番目のタブへ移動
:tabfirst最初のタブへ移動
:tablast最後のタブへ移動

このようにタブを切り替えながら作業すれば、ログ・設定ファイル・ソースコードを分離して管理でき、IDEに近い作業感をvimで再現できます。

ウィンドウ分割とswapファイルの注意点

ウィンドウ分割を利用して複数ファイルを同時に編集していると、片方を保存した後にもう一方で内容が競合した場合、Vimは自動的に swapファイル を生成します。これは突然のクラッシュや誤操作に備えた安全機構で、編集中の内容を失わずに復元できる仕組みです。

swapファイルが存在すると、次回の起動時に「既に編集中のファイルがあります」と警告が出ることがありますが、これは衝突を防ぎ、最新の編集内容を選択できるようにするためのものです。運用上は、どちらの変更を残すかを確認してから保存すれば、データ消失を回避できます。

プラグイン拡張による作業効率化

vimは素のままでも強力ですが、プラグインを導入することで作業環境を一気に快適にできます。

ファイル移動やバージョン管理、コード補完といった日常的な操作をエディタ内で完結できるため、外部ツールを行き来する手間がなくなります。

代表的なプラグインをいくつか紹介します。

代表的なプラグイン

  • NERDTree
    ディレクトリツリーを表示し、ファイルを直感的に選んで開けるようになります。長いパスを入力せずに済むため、複数ファイルを扱う開発で便利です。
  • vim-fugitive
    Git 連携のプラグインです。コミット内容の確認や差分の表示を vim 上で行えるので、ターミナルと行き来する必要がありません。
  • coc.nvim
    コード補完やエラー表示を強化し、まるでIDEのように使えます。タイプミスや構文エラーを即時に気付けるため、品質を落とさずにスピードを上げられます。

具体的な導入方法や使い方は本記事の範囲外ですので、もし気になった方は「vim NERDTree」「vim-fugitive」「coc.nvim」などで調べてみてください。

初心者が混乱しやすいポイントと対処法

viとvimは多くの場面で似た操作感を持ちますが、実際に作業を始めると初心者が混乱しやすい点がいくつもあります。

ここでは特に遭遇しやすいケースとその対処方法を整理しておきます。

正しく理解しておけば、不要なトラブルを避けてスムーズに作業を進められます。

vi環境しかない場合の対応方法

環境によってはvimがインストールされておらず、古いviしか利用できないことがあります。その場合はまずvimが導入可能か確認すると良いです。

vim --version

【出力例:】

bash: vim: command not found...

このように表示された場合はvimが入っていません。RHEL系環境では以下でインストール可能です。

sudo dnf install vim -y

【出力例:】

Installed: vim-enhanced.x86_64 ...

どうしてもインストールできない制限環境では、最低限の編集操作(iで挿入、:wqで保存終了、:q!で破棄終了)を覚えて対処するのが現実的です。

vimで誤動作する原因と設定確認

vimを使っていて「想定と違う動き」をする場合、多くは設定ファイルの影響です。まずは自分の環境でどの設定が読み込まれているか確認します。

vim --version | grep vimrc

【出力例:】

system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"

もし不要な設定で誤動作していると感じたら、一時的に設定を無効化して素の状態で起動できます。

vim -u NONE sample.sh

【出力例:】

"sample.sh" [New File]

これで設定ファイルを読み込まずに起動できるため、問題が環境設定かどうか切り分けられます。

viとvimを切り替える際の注意点

システムによっては「vi」と入力しても実際はvimにリンクされている場合があります。違いを確認するには以下のコマンドが有効です。

ls -l /usr/bin/vi

【出力例:】

/usr/bin/vi -> /usr/bin/vim

このようにシンボリックリンクされていれば、viと入力してもvimが起動します。

逆に本当に古いviしかない環境では、vim特有のコマンド(:tabnew など)は動作しません。

対処法としては、自分の用途に必要な機能がvimに含まれているかを理解しておき、環境に応じて「本当にviが必要なのか」「vimを導入すべきか」を判断することが重要です。

まとめと次のステップ

ここまででviとvimの基本から実務で役立つ機能までを整理しました。

実際の現場ではviしか使えない環境もあれば、vimが自由に使える環境もあります。どちらの特徴を理解しておくと、状況に応じて迷わず操作できるようになります。ここでは要点を振り返り、次に学ぶべき内容を示します。

viとvimの使い分けの要点整理

viとvimは見た目が似ているため混同しがちですが、役割と強みを理解すると安心して作業できます。

環境 特徴 活用メリット
vi ほぼ全てのLinuxに標準搭載、機能は最小限 制限環境や緊急時でも確実に使える
vim viを拡張し、検索・置換・ウィンドウ分割・プラグインに対応 日常の編集作業を効率化し、IDEに近い操作感が得られる

このように「最低限の環境で確実に動くvi」と「普段の作業効率を高めるvim」を理解して使い分けることが、Linux環境でストレスなく仕事を進める鍵になります。

🟢 Vimの基礎知識シリーズは段階的に進められる構成になっており、入門から実践、応用、カスタマイズまで体系的に学べます。

次のおすすめ記事

実践環境を整える

ここまで学んだ知識を実際に試すには、Linuxを動かす環境が必要です。手軽に始めるならVPSを利用するのがおすすめです。
VPS徹底比較!ConoHa・さくら・Xserverの選び方



VPSを利用してLinux環境を準備したら、実際の設定は下記の記事が参考になります。
VPSに開発環境を自動構築する方法|Apache+Tomcat+PostgreSQL

本サイトにて記載のすべてのスクリプト利用により発生した利用者の損害全てに対し、いかなる責任をも負わないものとし、損害賠償をする一切の義務はないものとします。また、この記事は、実際の案件対応を通じて得た知見をもとに筆者が作成したものであり、全コードと解説は著者本人による設計・検証結果に基づいています。

よく読まれている記事

1

「私たちが日々利用しているスマートフォンやインターネット、そしてスーパーコンピュータやクラウドサービス――これらの多くがLinuxの力で動いていることをご存じですか? 無料で使えるだけでなく、高い柔軟 ...

2

Linux環境でよく目にする「Vim」という名前。サーバーにログインしたら突然Vimが開いてしまい、「どうやって入力するの?」「保存や終了ができない!」と困った経験をした人も多いのではないでしょうか。 ...

3

ネットワーク技術は現代のITインフラにおいて不可欠な要素となっています。しかし、ネットワークを深く理解するためには、その基本となる「プロトコル」と「レイヤ」の概念をしっかり把握することが重要です。 こ ...

4

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

5

Javaは世界中で広く使われているプログラミング言語であり、特に業務システムやWebアプリケーションの開発において欠かせない存在です。本記事では、初心者向けにJavaの基礎知識を網羅し、環境構築から基 ...

-Vimの基礎知識