VSCodeVim Vim emulation for Visual Studio Code <!-- TODO: use pgns or something; otherwise vsce won't package it --> VSCodeVim is a Vim emulator for Visual Studio Code. 📃 Our…
VSCodeVim
Vim emulation for Visual Studio Code
<!-- TODO: use pgns or something; otherwise vsce won't package it



-->
VSCodeVim is a Vim emulator for Visual Studio Code.
- 📃 Our [change log](CHANGELOG.md) outlines the breaking/major/minor updates between releases.
- Report missing features/bugs on GitHub.
Table of Contents (click to expand)
- [💾 Installation](#-installation)
- [⚙️ Settings](#️-settings)
"vim.insertModeKeyBindings"/"vim.normalModeKeyBindings"/"vim.visualModeKeyBindings"/"vim.operatorPendingModeKeyBindings"](#viminsertmodekeybindingsvimnormalmodekeybindingsvimvisualmodekeybindingsvimoperatorpendingmodekeybindings)
- ["vim.insertModeKeyBindingsNonRecursive"/"normalModeKeyBindingsNonRecursive"/"visualModeKeyBindingsNonRecursive"/"operatorPendingModeKeyBindingsNonRecursive"](#viminsertmodekeybindingsnonrecursivenormalmodekeybindingsnonrecursivevisualmodekeybindingsnonrecursiveoperatorpendingmodekeybindingsnonrecursive)
- [Debugging Remappings](#debugging-remappings)
- [Remapping more complex key combinations](#remapping-more-complex-key-combinations)
- [Vim modes](#vim-modes)
- [Vim settings](#vim-settings)
- [.vimrc support](#vimrc-support)
- [🖱️ Multi-Cursor Mode](#️-multi-cursor-mode)
- [🔌 Emulated Plugins](#-emulated-plugins)
- [🎩 VSCodeVim tricks!](#-vscodevim-tricks)
- [📚 F.A.Q.](#-faq)
- [❤️ Contributing](#️-contributing)
💾 Installation
VSCodeVim can be installed via the VS Code Marketplace or the OpenVSX Marketplace.
Mac
To enable key-repeating, execute the following in your Terminal, log out and back in, and then restart VS Code:
sh
defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false # For VS Code
defaults write com.microsoft.VSCodeInsiders ApplePressAndHoldEnabled -bool false # For VS Code Insider
defaults write com.vscodium ApplePressAndHoldEnabled -bool false # For VS Codium
defaults write com.microsoft.VSCodeExploration ApplePressAndHoldEnabled -bool false # For VS Codium Exploration users
defaults write com.exafunction.windsurf ApplePressAndHoldEnabled -bool false # For Windsurf
defaults delete -g ApplePressAndHoldEnabled # If necessary, reset global default
We also recommend increasing Key Repeat and Delay Until Repeat settings in _System Settings/Preferences -> Keyboard_.
Windows
Like real vim, VSCodeVim will take over your control keys. This behavior can be adjusted with the [useCtrlKeys](#vscodevim-settings) and [handleKeys](#vscodevim-settings) settings.
⚙️ Settings
The settings documented here are a subset of the supported settings; the full list is described in the FEATURES -> Settings tab of VSCodeVim's extension details page, which can be found in the extensions view of VS Code.
Quick Example
Below is an example of a settings.json file with settings relevant to VSCodeVim:
json
{
"vim.easymotion": true,
"vim.incsearch": true,
"vim.useSystemClipboard": true,
"vim.useCtrlKeys": true,
"vim.hlsearch": true,
"vim.insertModeKeyBindings": [
{
"before": ["j", "j"],
"after": [""]
}
],
"vim.normalModeKeyBindingsNonRecursive": [
{
"before": ["", "d"],
"after": ["d", "d"]
},
{
"before": [""],
"commands": [":nohl"]
},
{
"before": ["K"],
"commands": ["lineBreakInsert"],
"silent": true
}
],
"vim.leader": "",
"vim.handleKeys": {
"": false,
"": false
},
// To improve performance
"extensions.experimental.affinity": {
"vscodevim.vim": 1
}
}
VSCodeVim settings
These settings are specific to VSCodeVim.
| Setting | Description | Type | Default Value |
| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------- |
| vim.changeWordIncludesWhitespace | Include trailing whitespace when changing word. This configures the cw action to act consistently as its siblings (yw and dw) instead of acting as ce. | Boolean | false |
| vim.cursorStylePerMode._{Mode}_ | Configure a specific cursor style for _{Mode}_. Omitted modes will use default cursor type Supported cursors: line, block, underline, line-thin, block-outline, and underline-thin. | String | None |
| vim.digraphs._{shorthand}_ | Set custom digraph shorthands that can override the default ones. Entries should map a two-character shorthand to a descriptive string and one or more UTF16 code points. Example: "R!": ["🚀", [55357, 56960]] | Object | {"R!": ["🚀", [0xD83D, 0xDE80]] |
| vim.disableExtension | Disable VSCodeVim extension. This setting can also be toggled using toggleVim command in the Command Palette | Boolean | false |
| vim.handleKeys | Delegate configured keys to be handled by VS Code instead of by the VSCodeVim extension. Any key in keybindings section of the package.json that has a vim.use in the when argument can be delegated back to VS Code by setting "": false. Example: to use ctrl+f for find (native VS Code behavior): "vim.handleKeys": { "": false }. | String | "": true "": false "": false |
| vim.overrideCopy | Override VS Code's copy command with our own, which works correctly with VSCodeVim. If cmd-c/ctrl-c is giving you issues, set this to false and complain here. | Boolean | false |
| vim.useSystemClipboard | Use the system clipboard register (*) as the default register | Boolean | false |
| vim.searchHighlightColor | Background color of non-current search matches | String | findMatchHighlightBackground ThemeColor |
| vim.searchHighlightTextColor | Foreground color of non-current search matches | String | None |
| vim.searchMatchColor | Background color of current search match | String | findMatchBackground ThemeColor |
| vim.searchMatchTextColor | Foreground color of current search match | String | None |
| vim.substitutionColor | Background color of substitution text when vim.inccommand is enabled | String | "#50f01080" |
| vim.substitutionTextColor | Foreground color of substitution text when vim.inccommand is enabled | String | None |
| vim.startInInsertMode | Start in Insert mode instead of Normal Mode | Boolean | false |
| vim.useCtrlKeys | Enable Vim ctrl keys overriding common VS Code operations such as copy, paste, find, etc. | Boolean | true |
| vim.visualstar | In visual mode, start a search with * or # using the current selection | Boolean | false |
| vim.highlightedyank.enable | Enable highlighting when yanking | Boolean | false |
| vim.highlightedyank.color | Set the color of yank highlights
…
Members
No repos match these filters.