Vi → Vim → Neovim の歴史
Vi(1976年)— すべての原点
Unix の黎明期、Bill Joy によって開発された vi(ヴィ)は、当時のテキスト端末という制約の中で生まれました。 カーソルキーすら存在しないシリアル端末で、いかに高速にテキストを編集するか——その答えが「モード」という概念でした。 文字を入力するモードと、コマンドを受け付けるモードを分けることで、ホームポジションから手を離さずにあらゆる操作が可能になりました。
vi は POSIX 標準に組み込まれ、今日においてもあらゆるUnix系システムに必ず搭載されています。 SSH でリモートサーバーに接続したとき、GUI が使えない環境でも vi なら必ずある——それが半世紀近く経った現在でも vi を学ぶ価値の一つです。
Vim(1991年)— vi をさらに強力に
Bram Moolenaar が開発した Vim(Vi IMproved)は、vi の哲学を受け継ぎながら大幅な機能拡張を加えました。 構文ハイライト、マルチバッファ、マクロ、正規表現検索、スクリプト言語(Vimscript)による拡張性……。 これらは当時のテキストエディタとして最先端であり、プログラマーたちの心を掴みました。
しかし Vim にはアーキテクチャ上の限界もありました。シングルスレッドで動作するため、重い処理(補完、構文解析)中はエディタ全体がフリーズします。 また Vimscript は学習コストが高く、現代的な言語と比べると扱いにくい。Bram Moolenaar は Vim の開発を長年一人で担っており、 コミュニティからのプルリクエストがなかなかマージされないという問題も生じていました。
Neovim(2014年〜)— コミュニティ主導のリファクタリング
2014年、Thiago de Arruda を中心とした開発者グループが Vim のフォークとして Neovim を立ち上げました。 目標は明確でした——Vim のコアを書き直し、モダンなアーキテクチャに刷新すること。 具体的には、非同期処理の導入、組み込み Terminal、LSP(Language Server Protocol)サポート、そして設定言語として Lua を採用することです。
皮肉なことに、Neovim の登場は Vim 本体の開発も刺激し、Vim 8.x 以降では非同期処理が追加されました。 しかし Neovim はその後も先進的な機能(Tree-sitter による構文解析、built-in LSP クライアント)を取り込み続け、 今日では多くのプログラマーにとって「モダン Vim」の事実上の標準となっています。
NvimとVimの違い
Lua による設定
Vim の設定は Vimscript という独自言語で書きますが、Neovim は Lua 5.1 を一等市民として採用しました。 Lua は世界的に使われている汎用スクリプト言語で、シンプルな構文と高い実行速度が特徴です。 既存のプログラミング知識がそのまま活かせるため、設定ファイルを書くこと自体がプログラミングの練習になります。
非同期処理(Job Control)
Vim はシングルスレッドで動くため、補完候補の計算中にエディタがフリーズすることがありました。 Neovim はイベントループを持ち、バックグラウンドジョブを非同期に実行できます。 これにより、重い処理(LSP、linter、formatter)中でも編集を続けられます。
組み込み LSP クライアント
LSP(Language Server Protocol) は Microsoft が提唱したプロトコルで、 コード補完・定義ジャンプ・エラー表示・リファクタリングなどを言語サーバーが提供します。 Neovim 0.5 以降はこのクライアントを組み込みで持っており、外部プラグインなしで LSP を利用できます。 VSCode が快適なのは LSP のおかげですが、Neovim でも同等の体験が得られます。
Tree-sitter による構文解析
従来の構文ハイライトは正規表現ベースで、複雑なコードでは誤検知が起きていました。 Neovim は Tree-sitter(インクリメンタル構文解析ライブラリ)を内蔵しており、 コードを正確に構文木として解析します。これにより、ハイライトの精度が劇的に向上し、 インデント・テキストオブジェクトも構文に基づいた正確な動作が可能になります。
組み込み Terminal
:terminal コマンドでエディタ内にターミナルを開けます。
バッファとしてターミナルが扱われるため、Vim のキーバインドでスクロール・コピーが可能です。
他エディタとの比較
| 項目 | Neovim | VSCode | Emacs | JetBrains IDE |
|---|---|---|---|---|
| 起動速度 | ⚡ 非常に速い | 🐢 遅め | 🐌 設定次第 | 🐢 重い |
| メモリ使用量 | ✅ 少ない | ❌ 多い | ⚠️ 中程度 | ❌ 非常に多い |
| カスタマイズ性 | ✅ 非常に高い | ⚠️ 高い | ✅ 非常に高い | ⚠️ 中程度 |
| 学習コスト | ❌ 高い | ✅ 低い | ❌ 非常に高い | ✅ 低い |
| マウス不要操作 | ✅ 完全対応 | ⚠️ 部分的 | ✅ 完全対応 | ❌ マウス前提 |
| LSP・補完 | ✅ 組み込み | ✅ 組み込み | ⚠️ プラグイン | ✅ 組み込み |
| リモート編集 | ✅ SSHで使用可 | ⚠️ Remote SSH拡張 | ✅ TRAMP経由 | ❌ 基本不可 |
| 設定言語 | Lua / Vimscript | JSON / JS | Emacs Lisp | GUI設定 |
| プラグインエコシステム | ✅ 豊富 | ✅ 非常に豊富 | ✅ 豊富 | ⚠️ 有料多め |
| 無料か | ✅ 完全無料 | ✅ 無料(Microsoft) | ✅ 完全無料 | ❌ 商用は有料 |
どんな人に向いているか
プログラマー
コードを書くとき、手はキーボードの上にあります。Neovim は マウスを一切使わずに ファイルを開き、 検索し、定義ジャンプし、リファクタリングする——すべてをキーボードで完結させます。 LSP による補完・エラー表示は VSCode と遜色なく、むしろ細かい挙動を制御しやすい面もあります。
ライター・技術文書作成者
Markdown や AsciiDoc でドキュメントを書く人にも Neovim は強力です。 スペルチェック、折りたたみ(folding)、アウトライン表示プラグイン、 そして高速なテキスト編集コマンドは、長文執筆を効率化します。 vi コマンドを覚えれば、文章の構造を素早く変更できます。
キーボード派・効率主義者
マウスとキーボードの往復には時間がかかります。Neovim を習得した人は 「マウスに手を伸ばすことが億劫になった」とよく言います。 キーボードショートカットを極限まで使いたい人、思考のスピードで編集したい人に向いています。
サーバー・インフラエンジニア
SSH でリモートサーバーに接続する機会が多いエンジニアにとって、 vi/Vim の操作を知っていることは必須スキルです。 Neovim を普段使いにすることで、リモート作業でも同じ感覚で操作できます。
学習コストを乗り越える価値
Neovim を学ぶ最大の障壁は、最初の数週間です。慣れないモード操作、覚えきれないキーバインド—— 「なんでこんな設計なんだ」と思うこともあるでしょう。しかし、この初期コストを乗り越えた先に何があるかを考えてください。
編集効率は「指数関数的」に向上する
vi の操作は「動詞+目的語」の組み合わせです。d(削除)+ w(単語)= 単語を削除、
c(変更)+ i(内側)+ "(ダブルクォート)= クォート内を変更、といった具合です。
この「言語」を習得すると、思考を止めずにコードを操作できるようになります。
エディタを「育てる」楽しみ
Neovim の設定ファイルはコードです。自分の作業スタイルに合わせてプラグインを追加し、 キーバインドを最適化し、見た目をカスタマイズする——それ自体が楽しい作業です。 自分の道具を自分で作る、という感覚は他のエディタにはない体験です。
一度覚えれば一生使える
VSCode はバージョンアップのたびに UI が変わります。JetBrains は製品ごとに設定が異なります。 しかし vi の基本操作は50年間ほとんど変わっていません。 Neovim を習得することは、一生使えるスキルへの投資です。
「速さ」が思考を変える
エディタの操作が「無意識」になると、頭の中はコードのロジックだけに集中できます。 脳のリソースをエディタ操作に使わなくて済む——これが上級者が口を揃えて言う 「Neovim を使うと考えるスピードで書ける」という感覚の正体です。
w と b だけ使ってみる」という小さな一歩から始めましょう。
毎日一つのコマンドを体に染み込ませていくだけで、3ヶ月後には劇的に変わっています。
焦らず、楽しみながら。それが Neovim 習得の唯一のコツです。