Vim(ヴィム)は、ターミナルの中で動くキーボード操作中心のテキストエディタです。名前は「Vi IMproved」の略で、Unixの標準エディタviの操作を引き継いで機能を足したもの(コードはviとは別)です。入力と編集でモードを切り替えて使うため、最初は「文字が打てない」「終了できない」でつまずきますが、覚える操作は十数個で足ります。この記事では、viとの違い、4つのモード、保存・終了・検索置換の基本コマンド、練習の方法、OS別のインストール、.vimrcの最初の書き方、VS CodeやEmacsとの使い分けまでを順に説明します。検索結果に並ぶ化粧品ブランド「vim BEAUTY」とは関係ありません。
まとめ:Vimの要点
- Vimはviの操作を引き継いだ上位版のエディタで、現行はVim 9.2(2026年2月14日公開)。ただしUbuntuやmacOSに最初から入っているのは9.1系です。
- 最初に覚えるのは3つだけです。
iで入力を始め、Escでノーマルモードに戻り、:wqで保存して終了します。抜けられないときはEscのあと:q!(保存せず終了)。 - 練習は
vimtutor jaで始める日本語の付属チュートリアル(第1章で約30分)が最短です。 - .vimrcを作ると、それまで自動で効いていた構文の色分けや検索中の強調が外れます(macOS同梱版は最初から外れています)。最初の.vimrcには
defaults.vimを読み込む2行を入れてください。 - SSH先のサーバーで設定ファイルを直す機会が多い人には向き、ローカルのGUIで大きなプロジェクトを開発する人はVS Codeのままで構いません。
Vimとは:Vi IMprovedの意味とviとの違い
Vimは1991年11月2日にBram Moolenaar氏がバージョン1.14を公開したエディタです。当初はAmiga向けの「Vi IMitation」でしたが、作者のMoolenaar氏は、Unixへ移植したバージョン1.22(1992年)の時点でviより機能が多くなったため「Vi IMproved」に改めたと述べています。読み方は「ヴィム」です。
開発の歴史と現在の版
Moolenaar氏は2023年8月3日に亡くなりました。Vimのヘルプには、9.1が同氏に捧げられたことが記されています(version9.txt)。その後はコミュニティが開発を引き継ぎ、現在はChristian Brabandt氏がGitHubのvim/vimへのパッチ取り込みを担っています。
| 版 | 公開日 | 主な変更 |
|---|---|---|
| 1.14 | 1991年11月2日 | 最初の公開版(Amiga・配布は1992年1月) |
| 1.22 | 1992年 | Unixへ移植、「Vi IMproved」に改称 |
| 8.0 | 2016年9月12日 | 非同期ジョブ、パッケージ機能 |
| 9.0 | 2022年6月28日 | Vim9 scriptを導入 |
| 9.1 | 2024年1月2日 | Moolenaar氏に捧げられた版 |
| 9.2 | 2026年2月14日 | Enum・Tuple、差分表示の改善、Wayland対応 |
9.2では、vim.orgの公開告知によると、Vim9 scriptのEnum・ジェネリック関数・Tuple、差分表示のlinematch、あいまい補完、’history’や’backspace’の既定値の見直しが入りました。パッチは毎日のように増えるので、版の細かな見分け方と更新手順はVim 9.2の新機能と最新バージョン確認・更新手順|Enum・Tuple・Wayland対応とパッチ判定にまとめています。
viとVimの違い
viは、Bill Joy氏が1976〜77年にexエディタへ全画面表示を加えたものが始まりで、POSIXで仕様が決まっています。Vimのヘルプvi_diff.txtは、Vimを「99% Vi compatible」と書き、そのうえで追加した機能を挙げています。
- 何回でも戻せるundo(
u)とやり直し(Ctrl+r)。set undofileでファイルを閉じても履歴が残る - 複数のウィンドウ分割とタブページ
- 構文の色分け、補完、プラグイン、Vim script
- ビジュアルモードでの範囲選択(矩形選択を含む)
実務で混乱しやすいのは、viと打って起動するのが実はVimである場合が多い点です。macOS 26では/usr/bin/viがvimへのシンボリックリンクになっています。viの解説で覚えた操作は、そのままVimで使えます。
Vimのモード:最初に覚える4つ
Vimで文字が打てない原因は、ほとんどがモードです。起動直後はノーマルモードで、ここで押したキーは文字ではなくコマンドとして扱われます。日常の操作は次の4つのモードで足ります。
| モード | 役割 | 入り方 |
|---|---|---|
| ノーマル | 移動・削除・コピー(起動直後) | どこからでもEsc |
| 挿入(インサート) | 文字を入力する | i / a / o |
| ビジュアル | 範囲を選んで操作する | v / V / Ctrl+v |
| コマンドライン | 保存・終了・置換 | :(検索は/) |
なお、Vimのヘルプ:help vim-modesは、基本モードを7つ(上の4つに選択・Ex・端末ジョブを加えたもの)、その変形を7つ(置換モードなど)と定義しています。残りは使う場面が限られるので、困ったらEscでノーマルに戻る、とだけ決めておけば十分です。
Vimの使い方:起動から保存・終了まで
ここからのコマンドは、特に断りがなければノーマルモードで入力します。
起動してファイルを開く
vim memo.txt # ファイルを開く(無ければ新規作成)
vim -R /etc/hosts # 読み取り専用で開く
vim -d old.conf new.conf # 2つのファイルの差分を左右に並べる(vimdiffと同じ)
vim --version | head -3 # 版と取り込み済みパッチを確認する
vim -dは差分の行に色が付き、]cで次の差分へ移動できます。doとdpで差分を片側へ取り込めるので、設定ファイルの新旧をその場で揃えられます。
保存と終了(Vimを終了できないとき)
保存と終了はコマンドラインモードで行います。挿入モードのまま:qと打つと、その文字が本文に入るだけです。先にEscを押してから入力します。
| コマンド | 動作 |
|---|---|
:w |
上書き保存 |
:q |
終了(未保存の変更があると止まる) |
:wq / :x / ZZ |
保存して終了 |
:q! / ZQ |
変更を捨てて終了 |
:qa! |
分割した全ウィンドウを捨てて終了 |
:qで「E37: No write since last change」と出たら、保存するなら:wq、捨てるなら:q!です。画面の最下行に入力中のコマンドが出ていないときは、まだEscが効いていません。もう一度Escを押します。
カーソル移動と編集:操作と移動の組み合わせ
移動はh(左)j(下)k(上)l(右)、単語単位はwとb、行頭は0、行末は$、ファイルの先頭と末尾はggとGです。
Vimの速さは、削除d・コピーy・書き換えcという「操作」と、上の「移動」を組み合わせられる点から来ます。dwは単語の削除、d$は行末までの削除、ciwはカーソル下の単語を消して入力を始めます。行全体はdd(削除)とyy(コピー)、貼り付けはpです。前に数字を付けると回数になり、3ddは3行削除、5jは5行下へ移動します。直前の変更を.で繰り返せるので、同じ修正を何か所かに当てるときは「1回編集して、移動して.」の繰り返しで済みます。間違えたらuで戻せます。
検索(/・n)と置換(:%s)の書き方
検索は/語のあとEnterで、nが次、Nが前の一致です。置換はコマンドラインモードで書きます。
:s/old/new/g
:%s/old/new/g
:%s/old/new/gc
:10,20s/old/new/g
上から順に、現在の行のoldをすべてnewに、ファイル全体で、1件ずつ確認しながら、10行目から20行目だけ、の置換です。末尾のgは1行の中の一致をすべて置き換える指定で、付けないと各行の最初の1件だけが変わります。パターンには正規表現が使えます。置換結果が気に入らなければu1回で全件が元に戻ります。
Vimの練習方法:vimtutor jaと:Tutor
Vimには練習用のチュートリアルが付いています。ターミナルで次のように起動すると、日本語版がファイルのコピーで開くので、本文を壊しながら試せます。
vimtutor ja # 第1章(移動・削除・保存などの基本)
vimtutor -c 2 ja # 第2章(レジスタやマークなど一歩先の操作)
日本語版の冒頭には、完了まで「およそ30分」と書かれています(tutor1.ja)。第2章は2024年11月に英語版が、2026年1月(パッチ9.1.2095前後)に日本語版が追加されました。このためUbuntu 26.04(9.1.2141)や9.2では日本語で開きますが、macOS同梱の9.1.1752では英語版が開きます。第2章そのものが無いUbuntu 24.04(9.1.0016)では、第1章だけで練習します。
英語版の第2章と同じ2024年11月のパッチ9.1.0836では、Vimの中から起動する対話型のチュートリアル:Tutorも入り、9.2に含まれています。Neovimから移植されたもので、リンクをたどりながら進められます。日本語版は無く、英語などで進みます(:help vim-tutor-mode)。
Vimのインストールと版の確認(Windows・macOS・Linux)
LinuxとmacOSにはvi/Vimが最初から入っていることが多いですが、UbuntuやmacOS、Debian 13が配るVimは9.1系、RHEL 9系は8.2のままです。Fedora 43・44やArch Linux(9.2.1178)は9.2系を配っています。9.1系以前の環境で9.2の機能を使いたい場合だけ入れ直します。
| 環境 | 入れ方 | 入る版(2026年10月29日時点) |
|---|---|---|
| Ubuntu 26.04 LTS | sudo apt install vim |
9.1.2141 |
| Ubuntu 24.04 LTS | sudo apt install vim |
9.1.0016 |
| Fedora 43・44 | sudo dnf install vim-enhanced |
9.2.1202 |
| RHEL 10系(AlmaLinux 10) | sudo dnf install vim-enhanced |
9.1.083 |
| RHEL 9系(AlmaLinux 9) | sudo dnf install vim-enhanced |
8.2.2637 |
| macOS(同梱) | 不要 | 9.1(macOS 26.6) |
| macOS(Homebrew) | brew install vim |
9.2.1250 |
| Windows | winget install vim.vim またはインストーラー |
9.2系 |
Ubuntuの版はLaunchpadの公開パッケージ、Homebrewはformulae.brew.shの値です。Ubuntuのパッケージは版番号が9.1のままでも、セキュリティ修正は個別に取り込まれます。Windowsのインストーラーはvim.orgのダウンロードページから辿れるvim-win32-installerで、2026年10月28日に9.2.1252が出ています。RHEL系のviは機能を絞ったvim-minimalなので、構文の色分けなどを使うならvim-enhancedを入れてvimで起動します。
入った版はvim --versionの1行目と「Included patches」の行で確かめます。Ubuntuでの導入や日本語化で迷ったらUbuntuとは|インストール手順・推奨スペック・日本語化とアプリセンターの文字化け対策も参考になります。
.vimrcの書き方:defaults.vimを失わない最初の設定
Vimの設定はホームディレクトリの.vimrc(Windowsでは_vimrc)に1行ずつ書きます。ここで初心者が気づきにくい落とし穴があります。
.vimrcを作ると既定の設定が外れる
Vimは、ユーザーの.vimrcが見つからないときだけ$VIMRUNTIME/defaults.vimを読み込み、構文の色分けやファイル形式の判定などを有効にします(:help defaults.vim)。つまり、行番号を出したくてset numberだけの.vimrcを作ると、それまで効いていた設定がまとめて外れます。Vim 9.1で、OS側の設定ファイルを外した状態で確かめた結果が次の表です。
| .vimrcの中身 | 構文の色分け | 検索中の強調 | scrolloff |
|---|---|---|---|
| .vimrcなし | 有効 | 有効 | 5 |
set numberだけ |
無効 | 無効 | 0 |
下の2行+set number |
有効 | 有効 | 5 |
macOS同梱のVimはシステム側の/usr/share/vim/vimrcでskip_defaults_vim=1を設定しているため、.vimrcの有無にかかわらずdefaults.vimが読まれません。macOSで「ほかの環境より色が付かない」と感じるのはこのためです。
最初の.vimrcの例
先頭の2行がdefaults.vimを読み直す指定で、ヘルプが推奨している書き方です。そのあとに好みの設定を足していきます。
unlet! skip_defaults_vim
source $VIMRUNTIME/defaults.vim
set encoding=utf-8
set fileencodings=ucs-bom,utf-8,cp932,euc-jp,latin1
set number " 行番号
set expandtab " タブを空白に置き換える
set tabstop=4 shiftwidth=4
set hlsearch " 検索結果を強調したままにする
set ignorecase smartcase
fileencodingsの行は日本語環境向けです。既定値は「ucs-bom,utf-8,default,latin1」でShift_JIS(cp932)を含みません。このためWindowsで作ったShift_JISのファイルをmacOSやLinuxで開くとlatin1と判定され、文字化けします(日本語版WindowsのVimは、既定値の「default」がシステムの文字コードcp932を指すので化けません)。上のようにcp932を加えると、同じファイルがcp932として正しく表示されます(Vim 9.1で確認)。
プラグインの入れ方:標準のパッケージ機能
Vim 8.0からは、プラグイン管理ツールがなくても~/.vim/pack/任意の名前/start/の下(Windowsでは~/vimfiles/pack/…)にプラグインを置くだけで起動時に読み込まれます(:help packages)。必要なときだけ読み込むならopt/に置いて:packadd 名前を使います。
git clone https://github.com/preservim/nerdtree.git ~/.vim/pack/plugins/start/nerdtree
更新や一括管理をしたくなったらvim-plugなどの管理ツールに移ります。入れ過ぎると起動が遅くなり、キー割り当ても衝突しやすくなるので、困っている作業を解決するものだけを足すのが長続きするやり方です。
VS Code・Emacs・nano・Neovimとの違いと使い分け
| エディタ | 操作の方式 | 覚える量 | 向く用途 |
|---|---|---|---|
| Vim | モード切り替え | 多い | SSH先・ターミナル中心の編集 |
| Neovim | Vimと同じ | 多い | Luaで設定、LSPを内蔵で使う |
| Emacs | 修飾キーの組み合わせ | 多い | Emacs Lispで環境を作り込む |
| VS Code | GUI・マウス併用 | 少ない | 大きなプロジェクトの開発 |
| nano | 画面下に操作を表示 | 少ない | 設定ファイルの短い修正 |
NeovimはVimから派生したエディタで、操作はほぼ共通です。設定をLuaで書きたい場合はNeovim(nvim)の使い方|基本操作・init.lua設定・プラグイン・LSP【0.12.6対応】を、EmacsについてはEmacs(イーマックス)とは?使い方・インストール・init.el設定を解説【31.1対応】を参照してください。
Vimを選ぶ場面・選ばなくてよい場面
Vimを覚える価値がはっきりあるのは、SSHで入ったサーバーで設定ファイルを直す作業が週に何度もある人です。GUIの無いLinuxサーバーにも、多くの場合viが最初から入っているからです(ubuntuやdebian-slimのコンテナイメージには入っていないので、必要ならapt install vimで入れます)。サーバーの構築や運用を外部に任せている場合も、障害時に設定ファイルを読む場面では役に立ちます(弊社のAWS・Google Cloud・Azureのインフラ構築支援でも、サーバー上の作業はターミナルが前提です)。
反対に、普段の開発がローカルのGUIで完結していて、サーバーを触るのが月に1回もないなら、Vimに乗り換える必要はありません。よくある失敗は、VS CodeからVimへ一気に移り、プラグインの設定に何日も使って本来の作業が止まることです。操作感だけ試したいなら、VS CodeにVimのキー操作を再現する拡張機能を入れる方法があります。nanoは操作が画面下に出るので、一度きりの修正にはこちらが早く済みます。
ターミナルの作業が中心になるなら、画面分割やセッションの維持を担うtmuxの使い方|Windows(psmux・WSL)の導入とコマンド・画面分割【3.8対応】と組み合わせると、SSHが切れても編集中の状態が残ります。
よくある質問
Vimの読み方と意味は?
「ヴィム」と読みます。「Vi IMproved」の略で、viを改良したエディタという意味です。最初の公開時(1991年)は「Vi IMitation」の略でした。
Vimを終了できないときはどうすればいい?
Escを押してから:q!と入力してEnterを押すと、変更を捨てて終了します。保存したいときは:wqです。挿入モードのままだと:qが本文に入力されるだけなので、先にEscが必要です。
viとVimはどう違う?
Vimはviとほぼ互換の操作のまま、何回でも戻せるundo、ウィンドウ分割、構文の色分け、プラグインなどを加えたエディタです。多くのLinuxやmacOSでは、viコマンドで起動するのも実際にはVimです。
nanoとVimはどっちを使うべき?
設定ファイルを一度直すだけならnanoが早く済みます。サーバーでの編集を日常的に行うならVimを覚えるほうが速く、多くのサーバーに最初から入っているviでも同じ操作が使えます。
VS CodeとVimはどっちがいい?
ローカルでの開発が中心ならVS Codeで十分です。SSH先での編集が多い人はVimを覚え、VS CodeにもVimのキー操作を入れて両方で同じ指の動きを使う、という組み合わせがあります。