neovimとは何か?Vimとの違いを今から知るならここだけ見ればいい
「neovimってVimの新しいバージョンですか」と聞かれて、うまく答えられなかったことがあります。厳密には違います。neovimはVimからフォークした別プロジェクトで、Vimの後継でも上位互換でもありません。両方とも今も並行して活発に開発されています。
検証環境:macOS + Neovim 0.12.4 / Vim 9.1.1752。vim.packによるプラグイン導入とvim.lspの組み込みAPIの有無は、実際に動かして確認しています。プロジェクトの方針に関する記述は公式サイト・FAQ・Charterからの引用です。
目次(8項目)
neovimの立ち位置
Vimは長年、開発者のBram Moolenaar氏(2023年に逝去)を中心とした体制で開発が続けられてきました。neovimは2014年に始まったプロジェクトで、複数のコントリビュータで開発を分担し、コアの拡張性を高めることを目的にしています。公式サイトは自身をこう表現しています。
hyperextensible Vim-based text editor
直訳すると「拡張性を極限まで高めたVimベースのテキストエディタ」という意味です。なぜそこを目指すのかは、公式FAQのほうがもう少し具体的に説明しています。
With 30% less source-code than Vim, the vision of Neovim is to enable new applications without compromising Vim's traditional roles.
「Vimより30%少ないソースコードで、Vimの伝統的な役割を損なうことなく新しいアプリケーションを実現する」というのがneovimのビジョンです。コードベースをスリムにしながら拡張の余地を確保する、というアプローチがここに表れています。
「目指していないこと」から分かる立ち位置
neovimが何を目指しているかより、目指していないことを見るほうが位置付けを掴みやすくなります。公式のCharterは、全体の方針を短くこう掲げています。
Extensible. Usable. Vim.
この3語のうち最後の「Vim.」が示すとおり、拡張性と使いやすさを追いながらもVimであることはやめない、という線引きが非目標にも表れています。Charterが明記している非目標は次の4つです。
- VimをIDEに変えること
- neovimで作られたサードパーティ製アプリ(IDEなど)を制限すること
- Vim scriptを廃止すること
- Vim9scriptをサポートすること
最後の「Vim9scriptをサポートしない」は比較的新しく加わりました。Vim9scriptはVim 8.2(2019年12月公開)で導入された新しい構文で、neovimはこれを追わずLuaを第一級の設定言語に据える道を選んでいます。IDE化を避け、既存のVim scriptも切り捨てず、それでいて独自路線は貫くという姿勢が、この非目標リストからは読み取れます。
実務で効いてくる3つの違い
機能差を細かく見ればきりがありませんが、実際に使い勝手へ直結するのは次の3点です。
| 観点 | neovim | Vim |
|---|---|---|
| LSPクライアント | コアに標準搭載 | Vim9でも対応が進むが別扱い |
| 設定言語 | Luaが第一級(init.lua) | Vim script(Vim9scriptもあり) |
| 構文解析 | Treesitterを標準統合 | 正規表現ベースのsyntax |
LSPクライアントがコアに標準搭載
別のプラグインを入れなくても、対応する言語サーバーさえ用意すれば補完・定義ジャンプ・診断が使えます。IDEに近い体験を、最小限の設定で得たい人にはこれが決め手になります。neovimがLSPクライアントを取り込んだのは2021年7月公開のv0.5からで、それ以前は他のエディタと同様プラグイン頼りでした。Vim側もyegappan氏によるVim9script製のlspプラグインなどでLSP対応が進んでいますが、コアへの標準搭載は2026年時点(Vim 9.2系)でもまだ実現していません。
設定のしかたも変わってきています。かつてはnvim-lspconfigのようなプラグインで言語サーバーごとの設定を持ってくるのが定番でしたが、0.11以降はvim.lsp.config()とvim.lsp.enable()という組み込みのAPIが用意され、手元の0.12.4でもどちらも存在することを確認しました。最小構成ならプラグイン無しで言語サーバーを有効にできます。
設定言語にLuaを使える
Vim scriptに比べて構造化がしやすく、条件分岐やモジュール分割も素直に書けます。lazy.nvimのような主要プラグインマネージャがLua前提で作られているのも、今neovimを選ぶ理由の一つになっています。
0.12でプラグインマネージャまで標準になった
ここは最近になって大きく変わった部分です。Neovim 0.12から、プラグインマネージャがコアに入りました。公式のニュース(:help news)には「Built-in plugin manager: vim.pack」と1行だけ書かれています。init.luaに次のように書くだけで、起動時にクローンから有効化まで済みます。
vim.pack.add({ "https://github.com/tpope/vim-surround" })
手元の0.12.4でこの1行だけのinit.luaを用意して起動したところ、次のような進捗表示が出てインストールが完了しました。
vim.pack: Installing plugins (0/1)
vim.pack: 100% Installing plugins (1/1) - vim-surround
入った先は~/.local/share/nvim/site/pack/core/opt/で、vim.pack.get()で確認するとactive=trueになっていました。用意されている関数はadd・get・update・delの4つで、追加・一覧・更新・削除がひととおり揃っています。
lazy.nvimのような遅延読み込みの細かい制御や依存関係の解決までは持っていないので、大きな構成を組んでいる人がすぐ乗り換える必要はありません。ただ「プラグインを2、3個入れたいだけなのにプラグインマネージャの導入から始める」という最初の段差は、これで完全に消えました。ブートストラップコードを書く手順を踏まなくてよくなったのは、始めたばかりの人にとって特に大きい変化です。
逆にVimを選ぶ理由もある
枯れた安定性を重視するなら、今でもVimは十分に理にかなっています。サーバー作業でどこにでも入っている、設定ファイルが1つで完結する、プラグインを増やさずシンプルに使い続けたい、という人には向いています。「新しいものを追いかけたいか、枯れたものを使い倒したいか」くらいの温度感で選んで問題ありません。
ターミナルではなくGUIで使いたい場合
neovim本体はターミナル上で動くコア(TUI)だけを提供していて、GUIは別プロジェクトが担っています。代表的なのは次の3つです。
| クライアント | 特徴 |
|---|---|
| Neovide | GPU描画のモダンなGUI。カーソルのアニメーションなど見た目にこだわりたい人向けで、2026年時点でも活発にメンテナンスされています。 |
| nvim-qt | Qtベースの老舗クライアント。起動オプションも含めてWindows環境でよく使われます。 |
| Goneovim | Go+Qtで書かれ、ミニマップなど独自機能が多かったが、Qt 5.15のEOLに伴い2026年3月に開発終了がアナウンスされました。作者は後継のZonvieというプロジェクトに移っています。 |
ターミナルでの作業がしんどければNeovide、Windowsで手堅く始めたいならnvim-qtが選びやすい候補です。Goneovimは開発が止まっているため、これから新規に選ぶ理由はあまりありません。
最初は「Vimに慣れているから困っていない」という理由でneovimに移らずにいました。実際に触ってみて驚いたのは、LSPの設定が思ったより少ない行数で済んだことでした。プラグインを何個も入れて補完環境を組んでいた頃より、むしろ設定ファイルはすっきりしました。とはいえサーバー上での作業では、今でも素のVimを使うことのほうが多いです。用途で使い分けています。
実際に始めるなら
存在は知っていても後回しにしがちなので、動かす手順だけ先に書いておきます。インストールはこちら、設定ファイルの置き場所はこちらにまとめています。入れた直後にプラグインがうまく動かない場合は、:checkhealthで環境を診断すると原因を絞り込みやすくなります。
0.12以降は、これまで外部プラグインに任せていた部分が本体に入ってきています。プラグインの導入はvim.pack、言語サーバーはlsp/とvim.lsp.enable、入力中の補完はautocompleteオプションだけで組めるので、これから設定を書き始めるならプラグインを入れる前に標準機能で足りるかを確かめると構成が小さく済みます。
まとめ
neovimはVimの後継ではなく、拡張性を重視して別方向に進化したフォークと言えます。LSP・Lua設定・Treesitterという3点が、実際の使い勝手に直結する違いになります。どちらか一方を選ばなければならないものではなく、用途によって使い分けても構いません。