Skip to content
| Marketplace
Sign in
Visual Studio Code>Keymaps>Neovim in VS CodeNew to Visual Studio Code? Get it now.
Neovim in VS Code

Neovim in VS Code

Preview

CameronAirlie

|
2 installs
| (0) | Free
Run your real Neovim — your init.lua, mappings and plugins — as the editor inside VS Code. Telescope, which-key and completion menus drawn in your theme, one undo tree, one jumplist.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

CodeVim logo

Neovim in VS Code

Your real Neovim — your init.lua, your mappings, your plugins — as the editing engine inside VS Code.

Marketplace version Installs Rating CI License: MIT Neovim 0.10+ VS Code 1.90+

Features · Getting started · Settings · Commands · Limitations · Changelog


CodeVim runs a real Neovim process and hands it every keystroke. Neovim does the editing — motions, operators, text objects, macros, registers, your mappings and your plugins — while VS Code keeps doing what it is good at: files, language servers, IntelliSense, the UI and saving. The two stay in sync in both directions.

Preview. CodeVim is used daily, but expect rough edges — please report anything odd.

✨ Features

  • 🧠 Your config, unchanged. CodeVim sets vim.g.vscode and ships a require('vscode') module compatible with vscode-neovim, so configs written for it load as-is.
  • ⌨️ Real Vim editing. Counts, operators, text objects, macros, registers, . repeat and one undo tree — not an emulation.
  • 💡 VS Code typing in insert mode. IntelliSense, snippets, auto-closing, multi-cursor and IME keep working, and plain typing still repeats with ..
  • 🔀 Pick your language features. codevim.languageFeatures chooses who does LSP and completion: vscode (IntelliSense; Neovim's LSP and completion plugins step aside, and K, gd, grn, ]d run VS Code commands) or neovim (your Neovim LSP and blink.cmp / nvim-cmp).
  • 🪟 Plugin UIs in your editor. Telescope, which-key, Lazy, completion menus and hover popups are drawn over the editor in your VS Code theme. Help, Oil, fugitive and quickfix open as VS Code editors.
  • 🧭 One navigation model. :e, gf, <C-o>/<C-i> and Telescope picks open VS Code editors; <C-w> splits and moves map to editor groups; VS Code's Go Back / Go Forward walk Neovim's jumplist.
  • 📁 Folds, search and cursor done natively. zc/zo/za drive VS Code folds, hlsearch uses VS Code's find colours, and the cursor shape follows the mode.
  • 🩺 Health checks. CodeVim: Check Health explains what's wrong when something is — Neovim version, conflicting extensions, settings, mappings your config took over.

🚀 Getting started

  1. Install Neovim 0.10 or newer (0.11 recommended) and make sure nvim is on your PATH — or point codevim.neovimPath at it.
  2. Disable other Vim extensions (VSCodeVim, VSCode Neovim). Only one extension can own VS Code's typing.
  3. Install CodeVim from the Marketplace and reload the window. The status bar shows -- NORMAL -- once Neovim is up.

Something not right? Run CodeVim: Check Health from the Command Palette, or open CodeVim: Show Log.

Using a separate config

Keep VS Code-specific settings apart from your terminal setup with any of:

-- in init.lua
if vim.g.vscode then
  -- running inside VS Code (CodeVim or vscode-neovim)
end

if require('codevim').active() then
  -- running inside CodeVim specifically
end

or give CodeVim its own config directory with codevim.neovimAppName (sets NVIM_APPNAME).

Calling VS Code from Lua

local vscode = require('vscode')
vscode.action('editor.action.formatDocument')
vscode.action('editor.action.rename')
vscode.update_config('editor.tabSize', 2)

⚙️ Settings

All settings live under codevim.*. The ones you are most likely to touch:

Setting Default What it does
codevim.neovimPath nvim Neovim executable
codevim.neovimAppName "" NVIM_APPNAME, for a separate config
codevim.languageFeatures both vscode: VS Code's LSP and IntelliSense only. neovim: your Neovim LSP and completion plugin only. both: leave both running
codevim.insert.strategy vscode With languageFeatures: both, who handles insert-mode typing: vscode, or neovim (insert mappings, Neovim completion)
codevim.insert.escapeSequence "" Two keys that leave insert mode, e.g. jk
codevim.ctrlKeys.normal / .insert / .cmdline see Settings Which ctrl+<key> combos go to Neovim; the rest keep their VS Code meaning
codevim.ctrlKeys.fromNeovim true Also send any Ctrl key Neovim gives a meaning (built in or mapped)
codevim.floats.display overlay Draw floats over the editor, on a separate surface, or not at all
codevim.floats.colors vscode Paint floats in your VS Code theme, or keep Neovim's colours
codevim.statusline.position statusBar Mode, command line and messages in the status bar, or a Vim-style line in the editor
codevim.updates.showReleaseNotes true Offer the release notes after an update

📋 Commands

Open the Command Palette and type CodeVim:

Command
Restart Neovim Restart the Neovim process (picks up config changes)
Toggle Turn CodeVim on or off — also ctrl+shift+alt+n
Check Health Diagnose installation and configuration problems
Resync all documents Push every open document to Neovim again
Show Log / Show Neovim Messages Troubleshooting output
What's New Open these release notes

🚧 Known limitations

  • One Neovim window mirrors the active editor; other visible editors are separate buffers, not Neovim splits.
  • With the default insert strategy, . repeats plain single-line typing only.
  • Floats are drawn with editor decorations and sized to codevim.uiWidth columns; icons need a Nerd Font in editor.fontFamily.
  • Remote, WSL, Dev Containers and notebooks are untested.

The full guide covers every feature, all settings and how CodeVim works inside.

🤝 Contributing

Bug reports and pull requests are welcome on GitHub. To build from source:

npm install
npm run build      # or: npm run watch, then F5 in VS Code
npm test
npm run package    # writes a .vsix

📄 License

MIT © Cameron Airlie

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft