{ "name": "vim", "displayName": "Vim", "description": "Vim emulation for Visual Studio Code", "icon": "images/icon.png", "version": "1.27.3", "publisher": "vscodevim", "galleryBanner": { "color": "#e3f4ff", "theme": "light" }, "license": "MIT", "keywords": [ "vim", "vi", "vscodevim" ], "repository": { "type": "git", "url": "https://github.com/VSCodeVim/Vim.git" }, "homepage": "https://github.com/VSCodeVim/Vim", "bugs": { "url": "https://github.com/VSCodeVim/Vim/issues" }, "engines": { "vscode": "^1.74.0" }, "categories": [ "Other", "Keymaps" ], "extensionKind": [ "ui" ], "sideEffects": false, "activationEvents": [ "onStartupFinished", "onCommand:type" ], "qna": "https://vscodevim.herokuapp.com/", "main": "./out/extension", "browser": "./out/extensionWeb", "capabilities": { "untrustedWorkspaces": { "supported": true }, "virtualWorkspaces": true }, "contributes": { "commands": [ { "command": "toggleVim", "title": "Vim: Toggle Vim Mode" }, { "command": "vim.showQuickpickCmdLine", "title": "Vim: Show Command Line" }, { "command": "vim.editVimrc", "enablement": "!isWeb", "title": "Vim: Edit .vimrc" } ], "keybindings": [ { "key": "Escape", "command": "extension.vim_escape", "when": "editorTextFocus && vim.active && !inDebugRepl" }, { "key": "Escape", "command": "notebook.cell.quitEdit", "when": "inputFocus && notebookEditorFocused && !editorHasSelection && !editorHoverVisible && vim.active && vim.mode == 'Normal'" }, { "key": "Home", "command": "extension.vim_home", "when": "editorTextFocus && vim.active && !inDebugRepl && vim.mode != 'Insert'" }, { "key": "ctrl+home", "command": "extension.vim_ctrl+home", "when": "editorTextFocus && vim.active && !inDebugRepl && vim.mode != 'Insert'" }, { "key": "End", "command": "extension.vim_end", "when": "editorTextFocus && vim.active && !inDebugRepl && vim.mode != 'Insert'" }, { "key": "ctrl+end", "command": "extension.vim_ctrl+end", "when": "editorTextFocus && vim.active && !inDebugRepl && vim.mode != 'Insert'" }, { "key": "Insert", "command": "extension.vim_insert", "when": "editorTextFocus && vim.active && !inDebugRepl" }, { "key": "Backspace", "command": "extension.vim_backspace", "when": "editorTextFocus && vim.active && !inDebugRepl" }, { "key": "Delete", "command": "extension.vim_delete", "when": "editorTextFocus && vim.active && !inDebugRepl" }, { "key": "tab", "command": "extension.vim_tab", "when": "editorTextFocus && vim.active && vim.mode != 'Insert' && !inDebugRepl" }, { "key": "shift+tab", "command": "extension.vim_shift+tab", "when": "editorTextFocus && vim.active && vim.mode != 'Insert' && !inDebugRepl" }, { "key": "left", "command": "extension.vim_left", "when": "editorTextFocus && vim.active && !inDebugRepl" }, { "key": "right", "command": "extension.vim_right", "when": "editorTextFocus && vim.active && !inDebugRepl" }, { "key": "up", "command": "extension.vim_up", "when": "editorTextFocus && vim.active && !inDebugRepl && !suggestWidgetVisible && !parameterHintsVisible" }, { "key": "down", "command": "extension.vim_down", "when": "editorTextFocus && vim.active && !inDebugRepl && !suggestWidgetVisible && !parameterHintsVisible" }, { "key": "g g", "command": "list.focusFirst", "when": "listFocus && !inputFocus" }, { "key": "h", "command": "list.collapse", "when": "listFocus && !inputFocus" }, { "key": "j", "command": "list.focusDown", "when": "listFocus && !inputFocus" }, { "key": "k", "command": "list.focusUp", "when": "listFocus && !inputFocus" }, { "key": "l", "command": "list.select", "when": "listFocus && !inputFocus" }, { "key": "o", "command": "list.toggleExpand", "when": "listFocus && !inputFocus" }, { "key": "/", "command": "list.toggleKeyboardNavigation", "when": "listFocus && !inputFocus && listSupportsKeyboardNavigation" }, { "key": "ctrl+a", "command": "extension.vim_ctrl+a", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+b", "command": "extension.vim_ctrl+b", "when": "editorTextFocus && vim.active && vim.use && vim.mode != 'Insert' && !inDebugRepl" }, { "key": "ctrl+c", "command": "extension.vim_ctrl+c", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl && vim.overrideCtrlC" }, { "key": "ctrl+d", "command": "extension.vim_ctrl+d", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+d", "command": "list.focusPageDown", "when": "listFocus && !inputFocus" }, { "key": "ctrl+e", "command": "extension.vim_ctrl+e", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+f", "command": "extension.vim_ctrl+f", "when": "editorTextFocus && vim.active && vim.use && vim.mode != 'Insert' && !inDebugRepl" }, { "key": "ctrl+g", "command": "extension.vim_ctrl+g", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+h", "command": "extension.vim_ctrl+h", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+i", "command": "extension.vim_ctrl+i", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+j", "command": "extension.vim_ctrl+j", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+k", "command": "extension.vim_ctrl+k", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+l", "command": "extension.vim_navigateCtrlL", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+m", "command": "extension.vim_ctrl+m", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl || vim.mode == 'CommandlineInProgress' && vim.active && vim.use && !inDebugRepl || vim.mode == 'SearchInProgressMode' && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+n", "command": "extension.vim_ctrl+n", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl || vim.mode == 'CommandlineInProgress' && vim.active && vim.use && !inDebugRepl || vim.mode == 'SearchInProgressMode' && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+o", "command": "extension.vim_ctrl+o", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+p", "command": "extension.vim_ctrl+p", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl || vim.mode == 'CommandlineInProgress' && vim.active && vim.use && !inDebugRepl || vim.mode == 'SearchInProgressMode' && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+q", "command": "extension.vim_winCtrlQ", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+r", "command": "extension.vim_ctrl+r", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+s", "command": "extension.vim_ctrl+s", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+t", "command": "extension.vim_ctrl+t", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+u", "command": "extension.vim_ctrl+u", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+u", "command": "list.focusPageUp", "when": "listFocus && !inputFocus" }, { "key": "ctrl+v", "command": "extension.vim_ctrl+v", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+w", "command": "extension.vim_ctrl+w", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+x", "command": "extension.vim_ctrl+x", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+y", "command": "extension.vim_ctrl+y", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+z", "command": "extension.vim_ctrl+z", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+6", "command": "extension.vim_ctrl+6", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+^", "command": "extension.vim_ctrl+^", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+[", "command": "extension.vim_ctrl+[", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+]", "command": "extension.vim_ctrl+]", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+shift+2", "command": "extension.vim_ctrl+shift+2", "when": "editorTextFocus && vim.active && vim.use" }, { "key": "ctrl+up", "command": "extension.vim_ctrl+up", "when": "editorTextFocus && vim.active && vim.mode != 'Insert' && !inDebugRepl" }, { "key": "ctrl+down", "command": "extension.vim_ctrl+down", "when": "editorTextFocus && vim.active && vim.mode != 'Insert' && !inDebugRepl" }, { "key": "ctrl+left", "command": "extension.vim_ctrl+left", "when": "editorTextFocus && vim.active && vim.mode != 'Insert' && !inDebugRepl" }, { "key": "ctrl+right", "command": "extension.vim_ctrl+right", "when": "editorTextFocus && vim.active && vim.mode != 'Insert' && !inDebugRepl" }, { "key": "ctrl+pagedown", "command": "extension.vim_ctrl+pagedown", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+pageup", "command": "extension.vim_ctrl+pageup", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+space", "command": "extension.vim_ctrl+space", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl && vim.mode != 'Insert'" }, { "key": "shift+G", "command": "list.focusLast", "when": "listFocus && !inputFocus" }, { "key": "ctrl+backspace", "command": "extension.vim_ctrl+backspace", "when": "editorTextFocus && vim.active && vim.use && vim.mode != 'Insert' && !inDebugRepl" }, { "key": "shift+backspace", "command": "extension.vim_shift+backspace", "when": "editorTextFocus && vim.active && vim.use && vim.mode != 'Insert' && !inDebugRepl" }, { "key": "cmd+left", "command": "extension.vim_cmd+left", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl && vim.mode != 'Insert'" }, { "key": "cmd+right", "command": "extension.vim_cmd+right", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl && vim.mode != 'Insert'" }, { "key": "cmd+a", "command": "extension.vim_cmd+a", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl && vim.mode != 'Insert'" }, { "key": "cmd+c", "command": "extension.vim_cmd+c", "when": "editorTextFocus && vim.active && vim.use && vim.overrideCopy && !inDebugRepl" }, { "key": "cmd+d", "command": "extension.vim_cmd+d", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "cmd+v", "command": "extension.vim_cmd+v", "when": "editorTextFocus && vim.active && vim.use && vim.mode == 'CommandlineInProgress' && !inDebugRepl || editorTextFocus && vim.active && vim.use && vim.mode == 'SearchInProgressMode' && !inDebugRepl" }, { "key": "ctrl+alt+down", "linux": "shift+alt+down", "mac": "cmd+alt+down", "command": "extension.vim_cmd+alt+down", "when": "editorTextFocus && vim.active && !inDebugRepl" }, { "key": "ctrl+alt+up", "linux": "shift+alt+up", "mac": "cmd+alt+up", "command": "extension.vim_cmd+alt+up", "when": "editorTextFocus && vim.active && !inDebugRepl" }, { "key": "j", "command": "notebook.focusNextEditor", "when": "vim.mode == 'Normal' && editorTextFocus && inputFocus && notebookEditorFocused && notebookEditorCursorAtBoundary != 'none' && notebookEditorCursorAtBoundary != 'top'" }, { "key": "k", "command": "notebook.focusPreviousEditor", "when": "vim.mode == 'Normal' && editorTextFocus && inputFocus && notebookEditorFocused && notebookEditorCursorAtBoundary != 'bottom' && notebookEditorCursorAtBoundary != 'none'" } ], "configuration": { "title": "Vim", "type": "object", "properties": { "vim.normalModeKeyBindings": { "type": "array", "markdownDescription": "Remapped keys in Normal mode. Allows mapping to Vim commands or VS Code actions. See [README](https://github.com/VSCodeVim/Vim/#key-remapping) for details.", "scope": "application" }, "vim.normalModeKeyBindingsNonRecursive": { "type": "array", "markdownDescription": "Non-recursive remapped keys in Normal mode. Allows mapping to Vim commands or VS Code actions. See [README](https://github.com/VSCodeVim/Vim/#key-remapping) for details.", "scope": "application" }, "vim.operatorPendingModeKeyBindings": { "type": "array", "markdownDescription": "Remapped keys in OperatorPending mode. Allows mapping to Vim commands or VS Code actions. See [README](https://github.com/VSCodeVim/Vim/#key-remapping) for details.", "scope": "application" }, "vim.operatorPendingModeKeyBindingsNonRecursive": { "type": "array", "markdownDescription": "Non-recursive remapped keys in OperatorPending mode. Allows mapping to Vim commands or VS Code actions. See [README](https://github.com/VSCodeVim/Vim/#key-remapping) for details.", "scope": "application" }, "vim.useCtrlKeys": { "type": "boolean", "markdownDescription": "Enable some Vim Ctrl key commands that override otherwise common operations, like `Ctrl+C`.", "default": true }, "vim.leader": { "type": "string", "markdownDescription": "What key should `` map to in remappings?", "default": "\\" }, "vim.searchHighlightColor": { "type": "string", "markdownDescription": "Background color of non-current search matches. The color must not be opaque so as not to hide underlying decorations. Uses `#editor.findMatchHighlightColor#` from current theme if undefined." }, "vim.searchHighlightTextColor": { "type": "string", "markdownDescription": "Foreground color of non-current search matches." }, "vim.searchMatchColor": { "type": "string", "markdownDescription": "Background color of the current match. Uses `#editor.findMatchColor#` from current theme if undefined." }, "vim.searchMatchTextColor": { "type": "string", "markdownDescription": "Foreground color of the current match." }, "vim.substitutionColor": { "type": "string", "markdownDescription": "Background color of substituted text when `#editor.inccommand#` is enabled. Uses `#editor.findMatchColor#` from current theme if undefined." }, "vim.substitutionTextColor": { "type": "string", "markdownDescription": "Foreground color of substituted text when `#editor.inccommand#` is enabled." }, "vim.highlightedyank.enable": { "type": "boolean", "description": "Enable highlighting when yanking.", "default": false }, "vim.highlightedyank.color": { "type": "string", "description": "Background color of yanked text. The color must not be opaque so as not to hide underlying decorations.", "default": "rgba(250, 240, 170, 0.5)" }, "vim.highlightedyank.textColor": { "type": "string", "description": "Foreground color of yanked text." }, "vim.highlightedyank.duration": { "type": "number", "description": "Duration in milliseconds of the yank highlight.", "default": 200, "minimum": 1 }, "vim.useSystemClipboard": { "type": "boolean", "description": "Use system clipboard for unnamed register.", "default": false }, "vim.overrideCopy": { "type": "boolean", "description": "Override VS Code's copy command with our own copy command, which works better with VSCodeVim. Turn this off if copying is not working.", "default": true }, "vim.insertModeKeyBindings": { "type": "array", "markdownDescription": "Remapped keys in Insert mode. Allows mapping to Vim commands or VS Code actions. See [README](https://github.com/VSCodeVim/Vim/#key-remapping) for details.", "scope": "application" }, "vim.insertModeKeyBindingsNonRecursive": { "type": "array", "markdownDescription": "Non-recursive keybinding overrides to use for Insert mode. Allows mapping to Vim commands or VS Code actions. See [README](https://github.com/VSCodeVim/Vim/#key-remapping) for details.", "scope": "application" }, "vim.visualModeKeyBindings": { "type": "array", "markdownDescription": "Remapped keys in Visual mode. Allows mapping to Vim commands or VS Code actions. See [README](https://github.com/VSCodeVim/Vim/#key-remapping) for details.", "scope": "application" }, "vim.visualModeKeyBindingsNonRecursive": { "type": "array", "markdownDescription": "Non-recursive keybinding overrides to use for Visual mode. Allows mapping to Vim commands or VS Code actions. See [README](https://github.com/VSCodeVim/Vim/#key-remapping) for details.", "scope": "application" }, "vim.commandLineModeKeyBindings": { "type": "array", "markdownDescription": "Remapped keys in command line mode. Allows mapping to Vim commands or VS Code actions. See [README](https://github.com/VSCodeVim/Vim/#key-remapping) for details.", "scope": "application" }, "vim.commandLineModeKeyBindingsNonRecursive": { "type": "array", "markdownDescription": "Non-recursive keybinding overrides to use for command line mode. Allows mapping to Vim commands or VS Code actions. See [README](https://github.com/VSCodeVim/Vim/#key-remapping) for details.", "scope": "application" }, "vim.textwidth": { "type": "number", "markdownDescription": "Width to word-wrap to when using `gq`.", "default": 80, "scope": "language-overridable", "minimum": 1 }, "vim.timeout": { "type": "number", "description": "Timeout in milliseconds for remapped commands.", "default": 1000, "minimum": 0 }, "vim.maxmapdepth": { "type": "number", "description": "Maximum number of times a mapping is done without resulting in a character to be used.", "default": 1000, "minimum": 0 }, "vim.scroll": { "type": "number", "markdownDescription": "Number of lines to scroll with `Ctrl-U` and `Ctrl-D` commands. Set to 0 to use a half page scroll.", "default": 0, "minimum": 0 }, "vim.showcmd": { "type": "boolean", "description": "Show the text of any command you are in the middle of writing.", "default": true }, "vim.showmodename": { "type": "boolean", "description": "Show the name of the current mode in the statusbar.", "default": true }, "vim.iskeyword": { "type": "string", "markdownDescription": "Keywords contain alphanumeric characters and '_'. If not configured, `#editor.wordSeparators#` is used." }, "vim.ignorecase": { "type": "boolean", "description": "Ignore case in search patterns.", "default": true }, "vim.smartcase": { "type": "boolean", "markdownDescription": "Override the `ignorecase` option if the search pattern contains upper case characters.", "default": true }, "vim.matchpairs": { "type": "string", "markdownDescription": "Characters that form pairs. The % command jumps from one to the other. Only character pairs are allowed that are different, thus you cannot jump between two double quotes. The characters must be separated by a colon. The pairs must be separated by a comma.", "default": "(:),{:},[:]", "pattern": "^(.:.)?(,.:.)*$" }, "vim.camelCaseMotion.enable": { "type": "boolean", "markdownDescription": "Enable the [CamelCaseMotion](https://github.com/bkad/CamelCaseMotion) plugin for Vim.", "default": false }, "vim.easymotion": { "type": "boolean", "markdownDescription": "Enable the [EasyMotion](https://github.com/easymotion/vim-easymotion) plugin for Vim.", "default": false }, "vim.easymotionMarkerBackgroundColor": { "type": "string", "default": "#0000", "description": "Set a custom background color for EasyMotion markers." }, "vim.easymotionMarkerForegroundColorOneChar": { "type": "string", "default": "#ff0000", "description": "Set a custom color for the text on one character long markers." }, "vim.easymotionMarkerForegroundColorTwoCharFirst": { "type": "string", "default": "#ffb400", "description": "Set a custom color for the first character on two character long markers." }, "vim.easymotionMarkerForegroundColorTwoCharSecond": { "type": "string", "default": "#b98300", "description": "Set a custom color for the second character on two character long markers." }, "vim.easymotionIncSearchForegroundColor": { "type": "string", "default": "#7fbf00", "markdownDescription": "Set a custom color for the easymotion search n-character (default `/`)." }, "vim.easymotionDimColor": { "type": "string", "default": "#777777", "markdownDescription": "Set a custom color for the easymotion dimmed characters when `#vim.easymotionDimBackground#` is set to true." }, "vim.easymotionDimBackground": { "type": "boolean", "description": "Whether to dim other text while markers are visible.", "default": true }, "vim.easymotionMarkerFontWeight": { "type": "string", "description": "Set the font weight of the marker text.", "default": "bold" }, "vim.easymotionKeys": { "type": "string", "description": "Set the characters used for jump marker name.", "default": "hklyuiopnm,qwertzxcvbasdgjf;" }, "vim.easymotionJumpToAnywhereRegex": { "type": "string", "description": "Regex matches for JumpToAnywhere motion.", "default": "\\b[A-Za-z0-9]|[A-Za-z0-9]\\b|_.|#.|[a-z][A-Z]" }, "vim.replaceWithRegister": { "type": "boolean", "markdownDescription": "Enable the [ReplaceWithRegister](https://github.com/vim-scripts/ReplaceWithRegister) plugin for Vim.", "default": false }, "vim.smartRelativeLine": { "type": "boolean", "markdownDescription": "`#editor.lineNumbers#` is determined by the active Vim mode, absolute when in insert mode, relative otherwise.", "default": false }, "vim.targets.enable": { "type": "boolean", "markdownDescription": "Enable [targets.vim](https://github.com/wellle/targets.vim#quote-text-objects) plugin (not fully implemented yet).", "default": false }, "vim.targets.bracketObjects.enable": { "type": "boolean", "markdownDescription": "Enable last/next movements for bracket objects.", "default": true }, "vim.targets.smartQuotes.enable": { "type": "boolean", "markdownDescription": "Enable the smart quotes movements from [targets.vim](https://github.com/wellle/targets.vim#quote-text-objects).", "default": true }, "vim.targets.smartQuotes.breakThroughLines": { "type": "boolean", "markdownDescription": "Whether to break through lines when using [n]ext/[l]ast motion, see [targets.vim#next-and-last-quote](https://github.com/wellle/targets.vim#next-and-last-quote).", "default": true }, "vim.targets.smartQuotes.aIncludesSurroundingSpaces": { "type": "boolean", "markdownDescription": "Whether to use default Vim behavior when using `a` (e.g. `da'`) which include surrounding spaces, or not, as for other text objects.", "default": true }, "vim.sneak": { "type": "boolean", "markdownDescription": "Enable the [Sneak](https://github.com/justinmk/vim-sneak) plugin for Vim.", "default": false }, "vim.sneakUseIgnorecaseAndSmartcase": { "type": "boolean", "markdownDescription": "Case sensitivity is determined by `#vim.ignorecase#` and `#vim.smartcase#`.", "default": false }, "vim.sneakReplacesF": { "type": "boolean", "markdownDescription": "Use single-character [Sneak](https://github.com/justinmk/vim-sneak) instead of Vim's native `f`.", "default": false }, "vim.surround": { "type": "boolean", "markdownDescription": "Enable the [Surround](https://github.com/tpope/vim-surround) plugin for Vim.", "default": true }, "vim.argumentObjectSeparators": { "type": "array", "items": { "type": "string" }, "markdownDescription": "Set separators for the argument text object.", "default": [ "," ] }, "vim.argumentObjectOpeningDelimiters": { "type": "array", "items": { "type": "string" }, "markdownDescription": "Set opening delimiters for the argument text object.", "default": [ "(", "[" ] }, "vim.argumentObjectClosingDelimiters": { "type": "array", "items": { "type": "string" }, "markdownDescription": "Set closing delimiters for the argument text object.", "default": [ ")", "]" ] }, "vim.hlsearch": { "type": "boolean", "description": "Show all matches of the most recent search pattern.", "default": false }, "vim.inccommand": { "type": "string", "markdownDescription": "Show the effects of the `:substitute` command as you type.", "default": "replace", "enum": [ "", "append", "replace" ], "enumDescriptions": [ "Don't show substitutions", "Show substitutions after matched text", "Replace matched text with substitutions" ] }, "vim.incsearch": { "type": "boolean", "markdownDescription": "Show where a `/` or `?` search matches as you type it.", "default": true }, "vim.history": { "type": "number", "description": "How much search or command history should be remembered.", "default": 50, "minimum": 1, "maximum": 10000 }, "vim.autoindent": { "type": "boolean", "description": "Indent code automatically.", "default": true }, "vim.joinspaces": { "type": "boolean", "description": "Add two spaces after '.', '?', and '!' when joining or reformatting.", "default": true }, "vim.startInInsertMode": { "type": "boolean", "description": "Start in Insert mode." }, "vim.handleKeys": { "type": "object", "description": "Delegate certain key combinations back to VS Code to be handled natively.", "default": { "": true, "": false, "": false } }, "vim.statusBarColorControl": { "type": "boolean", "markdownDescription": "Allow VSCodeVim to change status bar color based on mode. **NOTE:** Using this feature will have a negative impact on performance.", "default": false }, "vim.statusBarColors.normal": { "type": [ "string", "array" ], "description": "Status bar color when in Normal mode.", "default": [ "#005f5f", "#ffffff" ] }, "vim.statusBarColors.insert": { "type": [ "string", "array" ], "description": "Status bar color when in Insert mode.", "default": [ "#5f0000", "#ffffff" ] }, "vim.statusBarColors.visual": { "type": [ "string", "array" ], "description": "Status bar color when in Visual mode.", "default": [ "#5f00af", "#ffffff" ] }, "vim.statusBarColors.visualline": { "type": [ "string", "array" ], "description": "Status bar color when in VisualLine mode.", "default": [ "#005f87", "#ffffff" ] }, "vim.statusBarColors.visualblock": { "type": [ "string", "array" ], "description": "Status bar color when in VisualBlock mode.", "default": [ "#86592d", "#ffffff" ] }, "vim.statusBarColors.replace": { "type": [ "string", "array" ], "description": "Status bar color when in Replace mode.", "default": [ "#00000", "#ffffff" ] }, "vim.statusBarColors.commandlineinprogress": { "type": [ "string", "array" ], "description": "Status bar color when in CommandLineInProgress mode.", "default": [ "#007acc", "#ffffff" ] }, "vim.statusBarColors.searchinprogressmode": { "type": [ "string", "array" ], "description": "Status bar color when in SearchInProgress mode.", "default": [ "#007acc", "#ffffff" ] }, "vim.statusBarColors.easymotionmode": { "type": [ "string", "array" ], "description": "Status bar color when in EasyMotion mode.", "default": [ "#007acc", "#ffffff" ] }, "vim.statusBarColors.easymotioninputmode": { "type": [ "string", "array" ], "description": "Status bar color when in EasyMotionInput mode.", "default": [ "#007acc", "#ffffff" ] }, "vim.statusBarColors.surroundinputmode": { "type": [ "string", "array" ], "description": "Status bar color when in SurroundInput mode.", "default": [ "#007acc", "#ffffff" ] }, "vim.visualstar": { "type": "boolean", "markdownDescription": "In Visual mode, start a search with `*` or `#` using the current selection.", "default": false }, "vim.changeWordIncludesWhitespace": { "type": "boolean", "description": "Includes trailing whitespace when changing word.", "default": false }, "vim.foldfix": { "type": "boolean", "description": "Uses a hack to move around folds properly.", "default": false }, "vim.mouseSelectionGoesIntoVisualMode": { "type": "boolean", "description": "If enabled, dragging with the mouse activates Visual mode.", "default": true }, "vim.disableExtension": { "type": "boolean", "description": "Disables the VSCodeVim extension. The extension will continue to be loaded and activated, but Vim functionality will be disabled.", "default": false }, "vim.enableNeovim": { "type": "boolean", "markdownDescription": "Use Neovim to execute Ex commands. You should restart VS Code after enabling/disabling this for the changes to take effect. **NOTE:** Neovim version 0.2.0 or greater must be installed, and if the executable is not on your PATH, `#vim.neovimPath#` must be set.", "default": false }, "vim.neovimPath": { "type": "string", "markdownDescription": "Path to Neovim executable. For example, `/usr/bin/nvim`, or `C:\\Program Files\\Neovim\\bin\\nvim.exe`.", "default": "", "scope": "machine" }, "vim.neovimUseConfigFile": { "type": "boolean", "markdownDescription": "Use a config file for Neovim, specified by `#vim.neovimConfigPath#`.", "default": false }, "vim.neovimConfigPath": { "type": "string", "markdownDescription": "Path to Neovim configuration file. `#vim.neovimUseConfigFile#` must be enabled. If path is left blank, Neovim will use its default config path, i.e. `~/.config/nvim/init.vim` or 'C:\\Users\\USERNAME\\AppData\\Local\\nvim\\init.vim'.", "default": "", "scope": "machine" }, "vim.vimrc.enable": { "type": "boolean", "markdownDescription": "Use key mappings from a `.vimrc` file.", "default": false }, "vim.vimrc.path": { "type": "string", "markdownDescription": "Path to a Vim configuration file. If unset, it will check for `$HOME/.vscodevimrc`, `$HOME/.vimrc`, `$HOME/_vimrc`, and `$HOME/.config/nvim/init.vim`, in that order." }, "vim.substituteGlobalFlag": { "type": "boolean", "markdownDescription": "Automatically apply the global flag, `/g`, to substitute commands. When set to true, use `/g` to mean only first match should be replaced.", "default": false, "markdownDeprecationMessage": "**Deprecated**: Please use `#vim.gdefault#` instead.", "deprecationMessage": "Deprecated: Please use vim.gdefault instead." }, "vim.gdefault": { "type": "boolean", "markdownDescription": "Automatically apply the global flag, `/g`, to substitute commands. When set to true, use `/g` to mean only first match should be replaced.", "default": false }, "vim.cursorStylePerMode.normal": { "type": "string", "description": "Cursor style for Normal mode.", "enum": [ "", "block", "block-outline", "line", "line-thin", "underline", "underline-thin" ] }, "vim.cursorStylePerMode.insert": { "type": "string", "description": "Cursor style for Insert mode.", "enum": [ "", "block", "block-outline", "line", "line-thin", "underline", "underline-thin" ] }, "vim.cursorStylePerMode.replace": { "type": "string", "description": "Cursor style for Replace mode.", "enum": [ "", "block", "block-outline", "line", "line-thin", "underline", "underline-thin" ] }, "vim.cursorStylePerMode.visual": { "type": "string", "description": "Cursor style for Visual mode.", "enum": [ "", "block", "block-outline", "line", "line-thin", "underline", "underline-thin" ] }, "vim.cursorStylePerMode.visualline": { "type": "string", "description": "Cursor style for VisualLine mode.", "enum": [ "", "block", "block-outline", "line", "line-thin", "underline", "underline-thin" ] }, "vim.cursorStylePerMode.visualblock": { "type": "string", "description": "Cursor style for VisualBlock mode.", "enum": [ "", "block", "block-outline", "line", "line-thin", "underline", "underline-thin" ] }, "vim.autoSwitchInputMethod.enable": { "type": "boolean", "description": "If enabled, the input method switches automatically when the mode changes.", "default": false }, "vim.autoSwitchInputMethod.defaultIM": { "type": "string", "markdownDescription": "The input method for your normal mode, find more information [here](https://github.com/VSCodeVim/Vim#input-method).", "default": "", "scope": "machine" }, "vim.autoSwitchInputMethod.switchIMCmd": { "type": "string", "description": "The shell command to switch input method.", "default": "/path/to/im-select {im}", "scope": "machine" }, "vim.autoSwitchInputMethod.obtainIMCmd": { "type": "string", "description": "The shell command to get current input method.", "default": "/path/to/im-select", "scope": "machine" }, "vim.whichwrap": { "type": "string", "description": "Comma-separated list of motion keys that should wrap to next/previous line.", "default": "b,s" }, "vim.report": { "type": "number", "description": "Threshold for reporting number of lines changed.", "default": 2, "minimum": 1 }, "vim.digraphs": { "type": "object", "description": "Custom digraph shortcuts for inserting special characters, expressed as UTF16 code points.", "default": {} }, "vim.wrapscan": { "type": "boolean", "description": "Searches wrap around the end of the file.", "default": true }, "vim.startofline": { "type": "boolean", "markdownDescription": "When `true` the commands listed below move the cursor to the first non-blank of the line. When `false` the cursor is kept in the same column (if possible). This applies to the commands: ``, ``, ``, ``, `G`, `H`, `M`, `L`, `gg`, and to the commands `d`, `<<` and `>>` with a linewise operator.", "default": true }, "vim.showMarksInGutter": { "type": "boolean", "description": "Show the currently set mark(s) in the gutter.", "default": false }, "vim.shell": { "type": "string", "description": "Path to the shell to use for `!` and `:!` commands.", "default": "" } } }, "languages": [ { "id": "Vimscript", "extensions": [ ".vim", ".vimrc" ], "configuration": "./language-configuration.json" } ], "grammars": [ { "language": "Vimscript", "scopeName": "source.vimscript", "path": "./syntaxes/vimscript.tmLanguage.json" } ] }, "scripts": { "vscode:prepublish": "gulp build", "build": "gulp build", "build-dev": "gulp build-dev", "build-test": "gulp prepare-test", "test": "node ./out/test/runTest.js", "lint": "eslint .", "lint:fix": "eslint . --fix", "prettier": "prettier --write .", "prettier:check": "prettier --check .", "watch": "webpack -c webpack.dev.js --watch", "package": "yarn run vsce package --yarn --allow-star-activation", "prepare": "husky install" }, "dependencies": { "diff-match-patch": "1.0.5", "lodash": "^4.17.21", "neovim": "5.1.0", "os-browserify": "0.3.0", "parsimmon": "^1.18.0", "path-browserify": "1.0.1", "process": "0.11.10", "queue": "^6.0.2", "untildify": "4.0.0", "util": "0.12.5" }, "devDependencies": { "@types/diff": "5.2.1", "@types/diff-match-patch": "1.0.36", "@types/glob": "8.1.0", "@types/lodash": "4.17.5", "@types/mocha": "10.0.7", "@types/node": "18.19.39", "@types/parsimmon": "1.10.9", "@types/sinon": "17.0.3", "@types/vscode": "1.74.0", "@typescript-eslint/eslint-plugin": "^7.0.0", "@typescript-eslint/parser": "^7.0.0", "@vscode/test-electron": "2.4.0", "circular-dependency-plugin": "^5.2.2", "clean-webpack-plugin": "4.0.0", "eslint": "^8.52.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-jsdoc": "^48.0.0", "eslint-plugin-prefer-arrow": "^1.2.3", "event-stream": "4.0.1", "fork-ts-checker-webpack-plugin": "9.0.2", "gulp": "5.0.0", "gulp-bump": "3.2.0", "gulp-git": "2.10.1", "gulp-tag-version": "1.3.1", "gulp-typescript": "5.0.1", "husky": "^9.0.0", "lint-staged": "^15.0.0", "minimist": "1.2.8", "mocha": "10.4.0", "plugin-error": "2.0.1", "prettier": "3.3.2", "sinon": "18.0.0", "ts-loader": "9.5.1", "typescript": "5.4.5", "vsce": "2.15.0", "webpack": "5.92.1", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0", "webpack-stream": "7.0.0" }, "lint-staged": { "*.{ts,js,json,md,yml}": "prettier --write", "*.ts": "eslint --fix" } }