Last active
October 31, 2025 21:47
-
Star
(138)
You must be signed in to star a gist -
Fork
(22)
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'" | |
| } | |
| ] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
If you're trying to use the ctrl-h,j,k,l navigation in Cursor and seeing
Unknown part workbench.parts.activitybar, see: cursor/cursor#1570