VSCodeVim is an extension for Visual Studio Code that makes the editor behave like Vim. Vim is the long-running text editor whose distinguishing feature is modal editing: you press keys in normal mode to navigate and run commands, switch to insert mode to type text, and visual mode to select. People who learned Vim tend to want those same key combinations everywhere they edit code, and this extension brings them inside VS Code so they can keep that muscle memory while still using the rest of VS Code's interface. Installation is through the VS Code extension marketplace or the OpenVSX marketplace. On macOS the README points out a quirk: by default, holding a key down does not repeat the key the way Vim users expect, because of an accessibility feature called press-and-hold. The fix is a one-line defaults write command for the relevant VS Code build (regular, Insiders, VSCodium, or Windsurf), then a logout and restart. On Windows the extension takes over control-key shortcuts by default, which the README notes can be controlled by the useCtrlKeys and handleKeys settings. Configuration lives in VS Code's settings.json file. A worked example in the README turns on EasyMotion, incremental search, and the system clipboard, sets the leader key to space, maps jj in insert mode to escape, and remaps Ctrl-A and Ctrl-F back to VS Code's native handlers. Key remapping is broken down per Vim mode: insertModeKeyBindings, normalModeKeyBindings, visualModeKeyBindings, and operatorPendingModeKeyBindings, each with a Non-Recursive variant that does not re-trigger other mappings. The extension also supports loading an existing .vimrc file. A Neovim integration option lets the extension hand off Ex commands (the ones you type after a colon) to a real Neovim process for handling. The extension supports multi-cursor mode and emulates a number of popular Vim plugins, listed in the README: vim-airline, vim-easymotion, vim-surround, vim-commentary, vim-indent-object, vim-sneak, CamelCaseMotion, an input-method helper, ReplaceWithRegister, vim-textobj-entire, and vim-textobj-arguments. These are reimplementations inside the extension, so installing them as real Vim plugins is not needed. The settings table is long and covers everything from cursor styles per mode to custom digraph shorthands. The README also includes a tricks section and a frequently asked questions section, followed by contributor guidance and shoutouts. Reporting bugs and missing features is directed to the GitHub issue tracker, and a changelog file documents breaking, major, and minor updates between releases.
Generated 2026-05-21 · Model: sonnet-4-6 · Verify against the repo before relying on details.