
vscode-neovim が最高だった - 本物の Neovim を VSCode/Cursor で使う
最近、vscode-neovim という拡張機能を導入しました。 これが、長年の「IDE vs Vim」という葛藤に終止符を打つ、まさに革命的なツールだったので紹介します。
Vimキーバインド系プラグインの限界
VSCode(や Cursor)に限らず、これまで様々なエディタで Vim キーバインド系のプラグインを使ってきました。
Vim 拡張機能(VSCodeVim)は非常に優秀ですし、基本的な h j k l 移動や ciw などの操作は問題なくできます。
しかし、「本気で使い込む」 ことを避けていました。
理由は明確で、「設定ファイルやプラグインが別管理になるから」 です:
- 設定ファイルが別管理 -
.vimrcやinit.luaとは別に、プラグイン独自の設定が必要 - プラグインが使えない - 普段 Neovim で使っているプラグインが動かない
- 挙動の微妙な違い - 「Vim風」であって、本物の Vim ではない
- 再現コストが高い - エディタごとに同じ使い勝手を再現するのが大変
結局、複雑な編集をする時はターミナルに戻り、コードリーディングやデバッグはVSCodeで行う、という行ったり来たりが発生していました。
vscode-neovim との出会い
そんな中で出会ったのが vscode-neovim です。
このプラグインは、他の「Vim 風」プラグインとは根本的に異なります。 従来の「Vimの挙動をJavaScriptで真似して実装したエミュレーター」ではなく、実際に Neovim プロセスを起動して、VSCode のエディタと連携させるという仕組みです。
つまり、エミュレーションではなく、本物の Neovim が動いているのです。
ここが凄い:設定がそのまま動く!
vscode-neovim の最大の魅力は、普段使っている Neovim の設定がそのまま反映される点です。
-- init.lua の設定がそのまま動く!
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.expandtab = true
vim.opt.shiftwidth = 2
-- キーマッピングも
vim.keymap.set('n', '<leader>w', ':w<CR>')
vim.keymap.set('n', '<leader>q', ':q<CR>')
これまで育ててきた init.lua や .vimrc の設定が、VSCode/Cursor でもそのまま活きるのです。
もちろん、UIに関わる部分(ステータスラインやファイラーなど)はVSCode側に任せる必要がありますが、テキスト操作やキーマップに関しては、完全にいつものNeovim なのです。
- 独自に定義した複雑なキーマッピング
- テキストオブジェクトを拡張するプラグイン(
nvim-surroundやmini.aiなど) - 慣れ親しんだ入力補完の挙動
これらが、何の設定変更もなく「即座に」使えるようになった時の感動は凄まじいものがありました。
セットアップ方法
1. Neovim のインストール
まず、システムに Neovim がインストールされている必要があります。
# macOS (Homebrew)
brew install neovim
# Ubuntu
sudo apt install neovim
2. 拡張機能のインストール
VSCode または Cursor で「vscode-neovim」を検索してインストールします。
3. Neovim のパス設定(必要な場合)
settings.json で Neovim の実行ファイルパスを指定します:
{
"vscode-neovim.neovimExecutablePaths.darwin": "/opt/homebrew/bin/nvim",
"vscode-neovim.neovimExecutablePaths.linux": "/usr/bin/nvim"
}
VSCode 専用の設定を分離する
普段の Neovim と VSCode で挙動を変えたい場合は、条件分岐できます:
-- init.lua
if vim.g.vscode then
-- VSCode/Cursor 専用の設定
vim.keymap.set('n', '<leader>f', "<cmd>call VSCodeNotify('workbench.action.quickOpen')<CR>")
vim.keymap.set('n', '<leader>p', "<cmd>call VSCodeNotify('workbench.action.showCommands')<CR>")
else
-- 通常の Neovim 専用の設定
-- telescope.nvim などのプラグイン設定
end
このように分岐させることで、ターミナル用とVSCode用で設定を共存させることができます。
導入して変わったこと
1. 脳の切り替えが不要になった
「今はVSCodeだから、このキーバインドは使えないんだった」という思考のノイズが消えました。 ターミナルでもIDEでも、体に染み付いた操作がそのまま通用します。学習コストゼロで即戦力。
2. CursorのAI機能 × 本物のVim操作
最近はAIエディタの Cursor をメインに使っていますが、Cursorの強力なAI補完やチャット機能と、Neovimの強力なテキスト編集能力が融合しました。
AIにコードを書かせ、細かい修正や整形はVimの爆速操作で行う。 この組み合わせは、現時点で最強の開発体験だと感じています。
3. プラグインの恩恵
vim-surround や vim-commentary など、テキスト操作系のプラグインがそのまま動きます。
4. 設定の一元管理
.config/nvim/init.lua を編集すれば、ターミナルの Neovim と VSCode/Cursor の両方に反映されます。
注意点
- UI系プラグインは動かない - ファイラーやファジーファインダーなど、UI を描画するプラグインは VSCode 側の機能を使う必要があります
- 若干の起動オーバーヘッド - Neovim プロセスを起動するため、エディタ起動が少し遅くなる場合があります
まとめ
vscode-neovim は「Vim 風」ではなく「本物の Vim」を VSCode/Cursor で使える画期的なプラグインです。 「IDEの便利さ」と「Vimの操作性」を妥協なく両立させる 唯一の解だと感じました。
- 今まで育ててきた Neovim の設定がそのまま使える
- 体に染み付いた操作がそのまま活きる
- テキスト操作系プラグインも動作する
これまで「VSCodeのVimモード、なんか違うんだよな…」と思ってVimに戻っていた方、あるいは「Vimの設定をVSCodeに移植するのが面倒くさい」と感じていた方。
ぜひ、vscode-neovim を試してみてください。
あなたの init.lua が、そのままIDEで火を吹きます。