// Place your key bindings in this file to override the defaultsauto[] [ // #region quickOpen (Telescope) { // Telescope emulator "key": "space space", "command": "workbench.action.quickOpen", "when": "!editorFocus && !inputFocus" }, { "key": "ctrl+p", "command": "workbench.action.quickOpen" }, { "key": "ctrl+e", "command": "workbench.action.quickOpenNavigatePrevious", "when": "inQuickOpen" }, { "key": "ctrl+n", "command": "workbench.action.quickOpenNavigateNext", "when": "inQuickOpen" }, { "key": "ctrl+[", "command": "workbench.action.closeQuickOpen", "when": "inQuickOpen" }, // #endregion // #region plugin: code runner { "key": "ctrl+alt+n", "command": "-code-runner.run" }, // #endregion // #region Comment and semicolons { "key": "ctrl+oem_1", // ctrl+; "command": "extension.insertSemicolon", "when": "editorTextFocus" }, { // change to toggle comment "key": "ctrl+oem_2", // ctrl+/; "command": "-extension.insertSemicolon", "when": "editorTextFocus" }, { "key": "ctrl+shift+oem_1", "command": "extension.insertSemicolonWithNewLine", "when": "editorTextFocus" }, { "key": "ctrl+shift+oem_2", "command": "-extension.insertSemicolonWithNewLine", "when": "editorTextFocus" }, { "key": "ctrl+shift+oem_2", "command": "github.copilot.acceptCursorPanelSolution", "when": "github.copilot.activated && github.copilot.panelVisible" }, { "key": "ctrl+oem_2", "command": "-github.copilot.acceptCursorPanelSolution", "when": "github.copilot.activated && github.copilot.panelVisible" }, // #endregion { "key": "f9", "command": "csdevkit.debug.noDebugFileLaunch" }, { "key": "ctrl+h", "command": "-editor.action.startFindReplaceAction", "when": "editorFocus || editorIsOpen" }, { "key": "ctrl+h", "command": "-extension.vim_ctrl+h", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl" }, { "key": "ctrl+r", "command": "-workbench.action.reloadWindow", "when": "isDevelopment" }, { "key": "ctrl+alt+r", "command": "-workbench.action.terminal.runRecentCommand", "when": "terminalFocus && terminalHasBeenCreated && !accessibilityModeEnabled || terminalFocus && terminalProcessSupported && !accessibilityModeEnabled" }, { "key": "ctrl+r", "command": "-workbench.action.terminal.runRecentCommand", "when": "accessibilityModeEnabled && terminalFocus && terminalHasBeenCreated || accessibilityModeEnabled && terminalFocus && terminalProcessSupported || accessibilityModeEnabled && accessibleViewIsShown && terminalHasBeenCreated && accessibleViewCurrentProviderId == 'terminal' || accessibilityModeEnabled && accessibleViewIsShown && terminalProcessSupported && accessibleViewCurrentProviderId == 'terminal'" }, { "key": "ctrl+shift+r", "command": "-rerunSearchEditorSearch", "when": "inSearchEditor" }, { "key": "ctrl+shift+r", "command": "-editor.action.refactor", "when": "editorHasCodeActionsProvider && textInputFocus && !editorReadonly" }, { "key": "ctrl+shift+r", "command": "-workbench.action.quickOpenNavigatePreviousInRecentFilesPicker", "when": "inQuickOpen && inRecentFilesPicker" }, { "key": "ctrl+e", "command": "cursorEnd", "when": "textInputFocus" }, // #region Nvim-Tree like File Explorer // n, e : move cursor up/down // h : move cursor to parent folder // i : open file or folder { "key": "e", "command": "list.focusUp", "when": "notebookEditorFocused && !inputFocus && !notebookOutputInputFocused" }, { "key": "k", "command": "-list.focusUp", "when": "notebookEditorFocused && !inputFocus && !notebookOutputInputFocused" }, { "key": "e", "command": "list.focusUp", "when": "listFocus && !inputFocus" }, { "key": "k", "command": "-list.focusUp", "when": "listFocus && !inputFocus" }, { "key": "f", "command": "filesExplorer.findInWorkspace", "when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" }, { "key": "n", "command": "list.focusDown", "when": "listFocus && !inputFocus" }, { "key": "j", "command": "-list.focusDown", "when": "listFocus && !inputFocus" }, { "key": "i", "command": "list.select", "when": "listFocus && !inputFocus" }, { "key": "l", "command": "-list.select", "when": "listFocus && !inputFocus" }, { // z: Close all folders "key": "z", "command": "workbench.files.action.collapseExplorerFolders", "when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" }, { // e: Close left sidebar if is in file explorer "key": "space e", "command": "workbench.action.toggleSidebarVisibility", "when": "sideBarFocus && !inputFocus && !searchViewletVisible && filesExplorerFocus" }, { // e: Focus on file explorer if is on sidebar and not in file explorer "key": "space e", "command": "workbench.files.action.focusFilesExplorer", "when": "sideBarFocus && !inputFocus && !searchViewletVisible && !filesExplorerFocus" }, { // g: Focus on file explorer if is on sidebar and not in file explorer "key": "space g", "command": "workbench.scm.focus", "when": "sideBarFocus && !inputFocus && !searchViewletVisible && !scmViewletVisible" }, { // a: add "key": "a", "command": "explorer.newFile", "when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" }, { // p: paste "key": "p", "command": "filesExplorer.paste", "when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" }, { // x: cut "key": "x", "command": "filesExplorer.cut", "when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" }, { // d: delete "key": "d", "command": "deleteFile", "when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" }, { // r: rename "key": "r", "command": "renameFile", "when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" }, { // s: open in vertical split / to side "key": "s", "command": "explorer.openToSide", "when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" }, { // A: add folder "key": "shift+a", "command": "explorer.newFolder", "when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" }, { // C: Copy path "key": "shift+c", "command": "copyFilePath", "when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" }, { // E: Open in File Explorer "key": "shift+e", "command": "revealFileInOS", "when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" }, { // E: Open in File Explorer (WSL) "key": "shift+e", "command": "remote-wsl.revealInExplorer", "when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus && remoteName == 'wsl'" }, { // O: Open with System App "key": "shift+o", "command": "openInExternalApp.open", "when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" }, { // Y: Copy Relative Path "key": "shift+y", "command": "copyRelativeFilePath", "when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" }, { // R: Copy Relative Path "key": "shift+r", "command": "workbench.files.action.refreshFilesExplorer", "when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" }, { // T: Open in terminal "key": "shift+t", "command": "openInIntegratedTerminal", "when": "filesExplorerFocus && foldersViewVisible && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" }, // #endregion { "key": "ctrl+p", "command": "workbench.action.files.openFileFolder", "when": "isMacNative && openFolderWorkspaceSupport" }, { "key": "ctrl+o", "command": "-workbench.action.files.openFileFolder", "when": "isMacNative && openFolderWorkspaceSupport" }, { "key": "ctrl+p", "command": "-extension.vim_ctrl+p", "when": "editorTextFocus && vim.active && vim.use && !inDebugRepl || vim.active && vim.use && !inDebugRepl && vim.mode == 'CommandlineInProgress' || vim.active && vim.use && !inDebugRepl && vim.mode == 'SearchInProgressMode'" }, { "key": "ctrl+o", "command": "-workbench.action.files.openFolderViaWorkspace", "when": "!openFolderWorkspaceSupport && workbenchState == 'workspace'" }, // #region Vim-like Hover Browsing { "key": "h", "command": "editor.action.scrollLeftHover", "when": "editorHoverFocused" }, { "key": "n", "command": "editor.action.scrollDownHover", "when": "editorHoverFocused" }, { "key": "e", "command": "editor.action.scrollUpHover", "when": "editorHoverFocused" }, { "key": "i", "command": "editor.action.scrollRightHover", "when": "editorHoverFocused" }, // #endregion // #region Vim-like Jupyter Navigation { "key": "n", "command": "notebook.focusNextEditor", "when": "editorTextFocus && inputFocus && notebookEditorFocused && vim.mode == 'Normal' && notebookEditorCursorAtBoundary != 'none' && notebookEditorCursorAtBoundary != 'top'" }, { "key": "j", "command": "-notebook.focusNextEditor", "when": "editorTextFocus && inputFocus && notebookEditorFocused && vim.mode == 'Normal' && notebookEditorCursorAtBoundary != 'none' && notebookEditorCursorAtBoundary != 'top'" }, { "key": "e", "command": "notebook.focusPreviousEditor", "when": "editorTextFocus && inputFocus && notebookEditorFocused && vim.mode == 'Normal' && notebookEditorCursorAtBoundary != 'bottom' && notebookEditorCursorAtBoundary != 'none'" }, { "key": "k", "command": "-notebook.focusPreviousEditor", "when": "editorTextFocus && inputFocus && notebookEditorFocused && vim.mode == 'Normal' && notebookEditorCursorAtBoundary != 'bottom' && notebookEditorCursorAtBoundary != 'none'" }, // #endregion { "key": "ctrl+shift+g c", "command": "-gitlens.showQuickCommitFileDetails", "when": "editorTextFocus && !gitlens:disabled && config.gitlens.keymap == 'chorded'" }, { "key": "ctrl+shift+g s", "command": "git.stageAll" }, { "key": "ctrl+shift+g g", "command": "workbench.view.scm", "when": "workbench.scm.active" }, { "key": "ctrl+shift+g", "command": "-workbench.view.scm", "when": "workbench.scm.active" }, { "key": "ctrl+k ctrl+shift+b", "command": "editor.action.goToSelectionAnchor" }, { "key": "ctrl+k ctrl+shift+i", "command": "workbench.action.selectProductIconTheme" }, { "key": "ctrl+l p", "command": "-extension.openPrGitProvider" }, { "key": "ctrl+l g", "command": "-extension.openInGitHub" }, { "key": "ctrl+l c", "command": "-extension.copyGitHubLinkToClipboard" }, // #region Use ^n ^e to navigate completions { "key": "ctrl+n", "command": "workbench.action.files.newUntitledFile", "when": "!suggestWidgetVisible && !inQuickOpen" }, { "key": "ctrl+n", "command": "-workbench.action.files.newUntitledFile" }, { "key": "ctrl+n", "command": "selectNextSuggestion", "when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus || suggestWidgetVisible && textInputFocus && !suggestWidgetHasFocusedSuggestion" }, { "key": "ctrl+e", "command": "selectPrevSuggestion", "when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus || suggestWidgetVisible && textInputFocus && !suggestWidgetHasFocusedSuggestion" }, // #endregion // #region Terminal Control, use ^a as prefix / leader key // tmux-like terminal control { // prefix + x : kill terminal "key": "ctrl+q x", "command": "workbench.action.terminal.kill", "when": "terminalFocus" }, { // prefix + c : create new terminal "key": "ctrl+q c", "command": "workbench.action.terminal.new", "when": "terminalFocus" }, { // prefix + | : split terminal vertically "key": "ctrl+q shift+\\", "command": "workbench.action.terminal.split", "when": "terminalFocus" }, { // prefix + \ : split terminal vertically "key": "ctrl+q \\", "command": "workbench.action.terminal.split", "when": "terminalFocus" }, { // prefix + / : search "key": "ctrl+q /", "command": "workbench.action.terminal.focusFind", "when": "terminalFocus" }, { // prefix + t : toggle terminal "key": "ctrl+q t", "command": "workbench.action.terminal.toggleTerminal", "when": "terminalFocus" }, { // prefix + ^a: show information "key": "ctrl+q ctrl+q", "command": "workbench.action.terminal.focusHover", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalIsOpen || terminalFocus && terminalProcessSupported || terminalHasBeenCreated && terminalTabsFocus || terminalIsOpen && terminalTabsFocus || terminalProcessSupported && terminalTabsFocus" }, { "key": "ctrl+k ctrl+i", "command": "-workbench.action.terminal.focusHover", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalIsOpen || terminalFocus && terminalProcessSupported || terminalHasBeenCreated && terminalTabsFocus || terminalIsOpen && terminalTabsFocus || terminalProcessSupported && terminalTabsFocus" }, { // prefix + 1 : focus terminal 1 "key": "ctrl+q 1", "command": "workbench.action.terminal.focusAtIndex1", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalIsOpen || terminalFocus && terminalProcessSupported || terminalHasBeenCreated && terminalTabsFocus || terminalIsOpen && terminalTabsFocus || terminalProcessSupported && terminalTabsFocus" }, { // prefix + 2 : focus terminal 2 "key": "ctrl+q 2", "command": "workbench.action.terminal.focusAtIndex2", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalIsOpen || terminalFocus && terminalProcessSupported || terminalHasBeenCreated && terminalTabsFocus || terminalIsOpen && terminalTabsFocus || terminalProcessSupported && terminalTabsFocus" }, { // prefix + 3 : focus terminal 3 "key": "ctrl+q 3", "command": "workbench.action.terminal.focusAtIndex3", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalIsOpen || terminalFocus && terminalProcessSupported || terminalHasBeenCreated && terminalTabsFocus || terminalIsOpen && terminalTabsFocus || terminalProcessSupported && terminalTabsFocus" }, { // prefix + g : Go to recent directory "key": "ctrl+q g", "command": "workbench.action.terminal.goToRecentDirectory", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported" }, { "key": "ctrl+g", "command": "-workbench.action.terminal.goToRecentDirectory", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported" }, { // prefix + d : detach terminal "key": "ctrl+q d", "command": "workbench.action.terminal.detachSession", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported" }, { // prefix + a : attach to session "key": "ctrl+q a", "command": "workbench.action.terminal.attachToSession", "when": "terminalFocus" }, { "key": "ctrl+q h", "command": "workbench.action.terminal.focusPreviousPane", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported" }, { "key": "ctrl+q i", "command": "workbench.action.terminal.focusNextPane", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported" }, { "key": "ctrl+q shift+H", "command": "workbench.action.terminal.resizePaneLeft", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported" }, { "key": "ctrl+q shift+N", "command": "workbench.action.terminal.resizePaneDown", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported" }, { "key": "ctrl+q shift+E", "command": "workbench.action.terminal.resizePaneUp", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported" }, { "key": "ctrl+q shift+I", "command": "workbench.action.terminal.resizePaneRight", "when": "terminalFocus && terminalHasBeenCreated || terminalFocus && terminalProcessSupported" } ]