aioutecism/amVim-for-VSCode
{ "createdAt": "2015-12-01T07:58:00Z", "defaultBranch": "master", "description": "The Vim mode for Visual Studio Code(vscode) that works as expected.", "fullName": "aioutecism/amVim-for-VSCode", "homepage": "https://marketplace.visualstudio.com/items/auiworks.amvim", "language": "TypeScript", "name": "amVim-for-VSCode", "pushedAt": "2024-08-31T02:48:19Z", "stargazersCount": 463, "topics": [ "extension", "keybindings", "vim", "vscode" ], "updatedAt": "2025-09-30T22:21:53Z", "url": "https://github.com/aioutecism/amVim-for-VSCode"}amVim for VS Code
Section titled “amVim for VS Code”![icon]!(images/icon.png)
The Vim mode for Visual Studio Code that works as expected.
Key features
Section titled “Key features”- Vim style keybindings & looks
- Normal, Visual and Visual Line modes support
- Multi-cursor support
- Works with VS Code’s default behaviors
Not supported
Section titled “Not supported”:started commands: Only a few are supported now.- Visual Block mode: Please use multi-cursor instead for now.
- Custom keybindings: On the roadmap.
Commands
Section titled “Commands”Check the list here.
Configuration
Section titled “Configuration”You can override default configurations in User and Workspace Settings.
amVim.bindCtrlCommands
Section titled “amVim.bindCtrlCommands”Boolean, Default: true
Set to false to disable Ctrl+<key> keybindings.
amVim.mimicVimSearchBehavior
Section titled “amVim.mimicVimSearchBehavior”Boolean, Default: true
Set to false to keep VSCode’s keybinding when searching.
amVim.startInInsertMode
Section titled “amVim.startInInsertMode”Boolean, Default: false
Set to true to start in Insert mode when opening files.
amVim.smartRelativeLineNumbers
Section titled “amVim.smartRelativeLineNumbers”Boolean, Default: false
Set to true to will make line numbers relative when not in Insert mode.
amVim.useSystemClipboard
Section titled “amVim.useSystemClipboard”Boolean, Default: false
Set to true to copy to and paste from the system clipboard.
amVim.vimStyleNavigationInListView
Section titled “amVim.vimStyleNavigationInListView”Boolean, Default: true
Set to false to disable Vim style navigation in sidebar.
Contexts
Section titled “Contexts”You can make use of when clause contexts to construct keybindings that only apply in specific scenarios.
amVim.mode
Section titled “amVim.mode”String, Possible values: NORMAL, INSERT, VISUAL, VISUAL LINE
Tracks the current editing mode. For backward compatibility, REPLACE mode will appear as INSERT.
amVim.waitingForInput
Section titled “amVim.waitingForInput”Boolean
Set to true when amVim is waiting for further input to match a command, otherwise false.
This can be used to set up keybindings that perform a custom function when keys are pressed
independently, without overriding the default Vim style behavior for those keys when
prefixed.
For example, the following configuration will redefine Vim style navigation keys j and k
to move the native cursor, stepping over folded code and stepping into wrapped lines, while
still allowing longer Vim commands like 3j to work as expected:
[ { "key": "j", "command": "cursorDown", "when": "editorTextFocus && amVim.mode == 'NORMAL' && !amVim.waitingForInput" }, { "key": "k", "command": "cursorUp", "when": "editorTextFocus && amVim.mode == 'NORMAL' && !amVim.waitingForInput" }]Contributing
Section titled “Contributing”Feel free to open [issues][] to report bugs or require features.
[Pull requests][] are welcomed too! See VS Code’s official instructions about:
- [Extension API][]
- [Testing Extensions][]
- Protip: change
suite(tosuite.only(in a test file to run only a single test suite at a time. This saves quite a lot of time. Remember to remove the.onlypart before making a Git commit.
- Protip: change
[issues] !: https://github.com/aioutecism/amVim-for-VSCode/issues [Pull requests] !: https://github.com/aioutecism/amVim-for-VSCode/pulls [Extension API] !: https://code.visualstudio.com/api [Testing Extensions] !: https://code.visualstudio.com/api/working-with-extensions/testing-extension