vscode-neovim が最高だった - 本物の Neovim を VSCode/Cursor で使う

vscode-neovim が最高だった - 本物の Neovim を VSCode/Cursor で使う

作成日:
更新日:

最近、vscode-neovim という拡張機能を導入しました。 これが、長年の「IDE vs Vim」という葛藤に終止符を打つ、まさに革命的なツールだったので紹介します。

Vimキーバインド系プラグインの限界

VSCode(や Cursor)に限らず、これまで様々なエディタで Vim キーバインド系のプラグインを使ってきました。 Vim 拡張機能(VSCodeVim)は非常に優秀ですし、基本的な h j k l 移動や ciw などの操作は問題なくできます。

しかし、「本気で使い込む」 ことを避けていました。

理由は明確で、「設定ファイルやプラグインが別管理になるから」 です:

  • 設定ファイルが別管理 - .vimrcinit.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-surroundmini.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-surroundvim-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で火を吹きます。