Last active
April 21, 2025 22:25
-
Star
(102)
You must be signed in to star a gist -
Fork
(16)
You must be signed in to fork a gist
-
-
Save nikolovlazar/1174876ab2769c52ac9fc1534c557d70 to your computer and use it in GitHub Desktop.
VSCode key bindings to navigate like Neovim
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[ | |
// Navigation | |
{ | |
"key": "ctrl-h", | |
"command": "workbench.action.navigateLeft" | |
}, | |
{ | |
"key": "ctrl-l", | |
"command": "workbench.action.navigateRight" | |
}, | |
{ | |
"key": "ctrl-k", | |
"command": "workbench.action.navigateUp" | |
}, | |
{ | |
"key": "ctrl-j", | |
"command": "workbench.action.navigateDown" | |
}, | |
{ | |
"key": "space ,", | |
"command": "workbench.action.showAllEditors", | |
"when": "vim.mode == 'Normal' && (editorTextFocus || !inputFocus)" | |
}, | |
{ | |
"key": "space e", | |
"command": "runCommands", | |
"args": { | |
"commands": [ | |
"workbench.action.toggleSidebarVisibility", | |
"workbench.files.action.focusFilesExplorer" | |
] | |
}, | |
"when": "vim.mode == 'Normal' && (editorTextFocus || !inputFocus) && !sideBarFocus" | |
}, | |
{ | |
"key": "space e", | |
"command": "runCommands", | |
"args": { | |
"commands": [ | |
"workbench.action.toggleSidebarVisibility", | |
"workbench.action.focusActiveEditorGroup" | |
] | |
}, | |
"when": "sideBarFocus && !inputFocus" | |
}, | |
{ | |
"key": "space e", | |
"when": "vim.mode == 'Normal' && editorTextFocus && foldersViewVisible", | |
"command": "workbench.action.toggleSidebarVisibility" | |
}, | |
{ | |
"key": "s h", | |
"command": "workbench.action.splitEditor", | |
"when": "vim.mode == 'Normal' && (editorTextFocus || !inputFocus)" | |
}, | |
{ | |
"key": "s v", | |
"command": "workbench.action.splitEditorDown", | |
"when": "vim.mode == 'Normal' && (editorTextFocus || !inputFocus)" | |
}, | |
// Coding | |
{ | |
"key": "space c a", | |
"command": "editor.action.codeAction", | |
"when": "vim.mode == 'Normal' && editorTextFocus" | |
}, | |
{ | |
"key": "shift-k", | |
"command": "editor.action.moveLinesUpAction", | |
"when": "vim.mode == 'VisualLine' && editorTextFocus" | |
}, | |
{ | |
"key": "shift-j", | |
"command": "editor.action.moveLinesDownAction", | |
"when": "vim.mode == 'VisualLine' && editorTextFocus" | |
}, | |
{ | |
"key": "shift-k", | |
"command": "editor.action.showHover", | |
"when": "vim.mode == 'Normal' && editorTextFocus" | |
}, | |
{ | |
"key": "space c r", | |
"command": "editor.action.rename", | |
"when": "vim.mode == 'Normal' && editorTextFocus" | |
}, | |
{ | |
"key": "space c s", | |
"command": "workbench.action.gotoSymbol", | |
"when": "vim.mode == 'Normal' && editorTextFocus" | |
}, | |
{ | |
"key": "space b d", | |
"command": "workbench.action.closeActiveEditor", | |
"when": "(vim.mode == 'Normal' && editorTextFocus) || !inputFocus" | |
}, | |
{ | |
"key": "space b o", | |
"command": "workbench.action.closeOtherEditors", | |
"when": "(vim.mode == 'Normal' && editorTextFocus) || !inputFocus" | |
}, | |
{ | |
"key": "space space", | |
"command": "workbench.action.quickOpen", | |
"when": "vim.mode == 'Normal' && (editorTextFocus || !inputFocus)" | |
}, | |
{ | |
"key": "space g d", | |
"command": "editor.action.revealDefinition", | |
"when": "vim.mode == 'Normal' && editorTextFocus" | |
}, | |
{ | |
"key": "space g r", | |
"command": "editor.action.goToReferences", | |
"when": "vim.mode == 'Normal' && editorTextFocus" | |
}, | |
{ | |
"key": "space g i", | |
"command": "editor.action.goToImplementation", | |
"when": "vim.mode == 'Normal' && editorTextFocus" | |
}, | |
{ | |
"key": "space s g", | |
"command": "workbench.action.findInFiles", | |
"when": "vim.mode == 'Normal' && (editorTextFocus || !inputFocus)" | |
}, | |
{ | |
"key": "space g g", | |
"command": "runCommands", | |
"when": "vim.mode == 'Normal' && (editorTextFocus || !inputFocus)", | |
"args": { | |
"commands": ["workbench.view.scm", "workbench.scm.focus"] | |
} | |
}, | |
{ | |
"key": "ctrl-n", | |
"command": "editor.action.addSelectionToNextFindMatch", | |
"when": "(vim.mode == 'Normal' || vim.mode == 'Visual') && (editorTextFocus || !inputFocus)" | |
}, | |
// File Explorer | |
{ | |
"key": "r", | |
"command": "renameFile", | |
"when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" | |
}, | |
{ | |
"key": "c", | |
"command": "filesExplorer.copy", | |
"when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" | |
}, | |
{ | |
"key": "p", | |
"command": "filesExplorer.paste", | |
"when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" | |
}, | |
{ | |
"key": "x", | |
"command": "filesExplorer.cut", | |
"when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" | |
}, | |
{ | |
"key": "d", | |
"command": "deleteFile", | |
"when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" | |
}, | |
{ | |
"key": "a", | |
"command": "explorer.newFile", | |
"when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" | |
}, | |
{ | |
"key": "s", | |
"command": "explorer.openToSide", | |
"when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" | |
}, | |
{ | |
"key": "shift-s", | |
"command": "runCommands", | |
"when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus", | |
"args": { | |
"commands": [ | |
"workbench.action.splitEditorDown", | |
"explorer.openAndPassFocus", | |
"workbench.action.closeOtherEditors" | |
] | |
} | |
}, | |
{ | |
"key": "enter", | |
"command": "explorer.openAndPassFocus", | |
"when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceIsFolder && !inputFocus" | |
}, | |
{ | |
"key": "enter", | |
"command": "list.toggleExpand", | |
"when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && explorerResourceIsFolder && !inputFocus" | |
}, | |
// Debug | |
{ | |
"key": "space d a", | |
"command": "workbench.action.debug.selectandstart", | |
"when": "vim.mode == 'Normal' && (editorTextFocus || !inputFocus) && debuggersAvailable" | |
}, | |
{ | |
"key": "space d t", | |
"command": "workbench.action.debug.stop", | |
"when": "vim.mode == 'Normal' && editorTextFocus && inDebugMode && !focusedSessionIsAttached" | |
}, | |
{ | |
"key": "space d o", | |
"command": "workbench.action.debug.stepOver", | |
"when": "vim.mode == 'Normal' && (editorTextFocus || !inputFocus) && inDebugMode && debugState == 'stopped'" | |
}, | |
{ | |
"key": "space d b", | |
"command": "editor.debug.action.toggleBreakpoint", | |
"when": "vim.mode == 'Normal' && editorTextFocus" | |
}, | |
{ | |
"key": "space d e", | |
"command": "editor.debug.action.showDebugHover", | |
"when": "vim.mode == 'Normal' && editorTextFocus && inDebugMode && debugState == 'stopped'" | |
}, | |
{ | |
"key": "space d c", | |
"command": "workbench.action.debug.continue", | |
"when": "vim.mode == 'Normal' && (editorTextFocus || !inputFocus) && inDebugMode && debugState == 'stopped'" | |
} | |
] |
@nikolovlazar thanks a lot. This is what I need - good from both worlds - VimVS.
If you have a problem with space+e try this:
"key": "space e",
"when": "vim.mode == 'Normal' && editorTextFocus && foldersViewVisible",
"command": "workbench.action.toggleSidebarVisibility"
},
{
"key": "space e",
"when": "vim.mode == 'Normal' && sideBarVisible",
"command": "workbench.action.toggleSidebarVisibility"
}
Anybody knows how to make the file explorer related bindings to work on solution explorer that comes with C# dev kit. I am trying to migrate from Visual studio to Code for that. I did not find any documentation around that as well.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Glad you found this useful @hvenry @ravicorreia 🙌