Keybindings reference
This page lists the keybindings in the keybindings.json of my R profile (see Profiles and Settings Sync). Many of them bring back RStudio shortcuts. My teaching profile R-Lecturer has none of its own (R-Lecturer). The file is at the end of the page.
How to read the file
Each rule has a key, a command and optionally args and a when condition; a later rule beats an earlier one and the defaults, and a command starting with - removes a default binding. The format is described in the VS Code keybindings documentation.
I use a Czech keyboard layout. oem_* names depend on the layout, while names in square brackets, such as [Digit1], are scan codes (physical key positions). The tables give the keys as I press them, plus the US equivalent where it differs:
| In the file | Czech layout (what I press) | US layout |
|---|---|---|
ctrl+shift+oem_2 |
Ctrl+Shift+´ (the ´/ˇ key left of Backspace) |
Ctrl+Shift+/ |
ctrl+oem_period |
Ctrl+. |
Ctrl+. |
ctrl+shift+, |
Ctrl+Shift+, |
Ctrl+Shift+, (that is, Ctrl+<) |
ctrl+shift+oem_3 |
Ctrl+Shift+; (the ;/° key left of +) |
Ctrl+Shift+` |
ctrl+alt+oem_3 |
Ctrl+Alt+; |
Ctrl+Alt+` |
ctrl+k ctrl+[Digit1] |
Ctrl+K, then Ctrl++ |
Ctrl+K, then Ctrl+1 |
ctrl+k ctrl+[Digit2] |
Ctrl+K, then Ctrl+ě |
Ctrl+K, then Ctrl+2 |
Reusing the file on another layout
On a US layout the bindings stay on the same physical keys, except ctrl+shift+oem_2, which moves from the key left of Backspace to the / key. On other layouts the oem_* keys can land anywhere. Developer: Toggle Keyboard Shortcuts Troubleshooting logs in the Output panel how VS Code reads a key press and which rule it runs.
General
| Keys (as pressed) | Action | When | Replaces default? |
|---|---|---|---|
Ctrl+Shift+´ (US: Ctrl+Shift+/) |
Insert ``` (type) |
always | none |
The rule has no when, but type only does something when the cursor is in a text input.
R language
Documentation and help
| Keys (as pressed) | Action | When | Replaces default? |
|---|---|---|---|
Ctrl+Shift+D |
Document the package (r.document) |
resourceLangId == 'r' |
Run and Debug view |
F1 |
R help for the word under the cursor (r.helpPanel.openForSelection) |
R files; R Markdown and Quarto text (see below) | Show All Commands |
r.document runs the vscode-R task R: Document, which calls devtools::document(). It needs devtools (see Install). In any other file, Ctrl+Shift+D still opens Run and Debug.
The full when of the F1 rule is:
editorLangId == 'r' || editorTextFocus && editorLangId == 'rmd' || editorTextFocus && editorLangId == 'quarto'
So F1 opens R help whenever an R file is focused, and in R Markdown and Quarto documents when the cursor is in the text. Everywhere else F1 still opens the Command Palette, which is also on Ctrl+Shift+P.
Quarto’s language id is quarto, not qmd.
Operators
| Keys (as pressed) | Action | When | Replaces default? |
|---|---|---|---|
Ctrl+Shift+M |
Insert the native pipe in the editor (type) |
editorTextFocus |
Problems panel |
Ctrl+Shift+M |
Send the native pipe to the terminal (workbench.action.terminal.sendSequence) |
terminalFocus |
Problems panel |
Ctrl+Shift+, (US: Ctrl+<) |
Insert the assignment arrow in the editor (type) |
editorTextFocus |
Replace with Previous Value |
Ctrl+Shift+, (US: Ctrl+<) |
Send the assignment arrow to the terminal (workbench.action.terminal.sendSequence) |
terminalFocus |
none |
Both texts include a space on each side: the pipe rules insert |> and the arrow rules insert <-. The pipe is R’s native pipe (R 4.1 or later), not magrittr’s %>%.
Each operator has two rules because type only types into a text editor, not into the terminal. In the terminal, workbench.action.terminal.sendSequence writes the text straight to radian. Outside both, Ctrl+Shift+M still opens the Problems panel.
Tools
| Keys (as pressed) | Action | When | Replaces default? |
|---|---|---|---|
Ctrl+Shift+X |
Run reprex::reprex() in the R terminal (r.runCommand) |
resourceLangId == 'r' |
Extensions view |
Ctrl+Shift+W |
Open the R view: sessions, workspace, help (workbench.view.extension.workspaceViewer) |
always | Close Window |
Ctrl+Alt+P |
Open the httpgd plot viewer beside the editor (r.runCommand) |
editorTextFocus && editorLangId == 'r' |
none |
r.runCommand sends its args as R code to the active R terminal (r.alwaysUseActiveTerminal is on, see Settings).
- reprex.
reprex::reprex()with no arguments takes the code from the clipboard, runs it in a clean R session, and puts the rendered Markdown (code plus output) back on the clipboard, ready to paste into an issue or an e-mail. So copy the code first, then press the key. It needs the reprex package (install.packages("reprex"); it also comes with the tidyverse). When the active file is not R,Ctrl+Shift+Xstill opens the Extensions view. - httpgd viewer. The rule runs
.vsc.browser(httpgd::hgd_url(), viewer = "Beside").httpgd::hgd_url()returns the address of the running httpgd server;.vsc.browser()is a vscode-R helper that opens an address in a VS Code viewer, here in the editor column beside the current one. It needs the httpgd package, a running httpgd device (my.Rprofilemakes httpgd the default device, so it starts with the first plot), and an R terminal attached to VS Code (r.sessionWatcher). - R view.
workbench.view.extension.workspaceVieweropens vscode-R’s container in the activity bar, with the attached sessions, the objects in the global environment, and the help pages. The workspace list needs the session watcher too. Close Window still works withAlt+F4.
Editor
Symbols
| Keys (as pressed) | Action | When | Replaces default? |
|---|---|---|---|
Ctrl+. |
Go to Symbol in Workspace (workbench.action.showAllSymbols) |
always | Quick Fix |
The default key for Go to Symbol in Workspace, Ctrl+T, still works. Quick Fix is still available from the light bulb in the editor.
File operations
| Keys (as pressed) | Action | When | Replaces default? |
|---|---|---|---|
Ctrl+N |
New untitled R file (r.newFileDocument) |
editorTextFocus && !editorReadonly |
New Untitled Text File (removed) |
Ctrl+W |
Close the editor (workbench.action.closeActiveEditor) |
!terminalFocus |
Close Editor (removed, re-added here) |
How these two keys share the editor and the terminal is explained under Terminal.
Autocomplete
| Keys (as pressed) | Action | When | Replaces default? |
|---|---|---|---|
Ctrl+Alt+I |
Trigger an inline suggestion (editor.action.inlineSuggest.trigger) |
editorTextFocus && !editorReadonly |
Open Chat; an extension’s insert-snippet binding (removed) |
Inline suggestions are the grey “ghost text” completions from Copilot or another provider (editor.inlineSuggest.enabled is on). VS Code’s own key for this is Alt+\. When the cursor is not in an editor, Ctrl+Alt+I still opens the Chat view.
Terminal
| Keys (as pressed) | Action | When | Replaces default? |
|---|---|---|---|
Ctrl+L |
Clear the terminal (workbench.action.terminal.clear) |
terminalFocus |
none (the key would go to radian) |
Ctrl+W |
Kill the terminal (workbench.action.terminal.kill) |
terminalFocus |
Close Editor |
Ctrl+N |
New terminal (workbench.action.terminal.new) |
terminalFocus |
New Untitled Text File |
Ctrl+Shift+; (US: Ctrl+Shift+`) |
New terminal in the active folder (workbench.action.terminal.newInActiveWorkspace) |
!terminalFocus |
New Terminal (removed) |
Ctrl+Alt+; (US: Ctrl+Alt+`) |
Split the terminal (workbench.action.terminal.split) |
terminalFocus |
none (default split is Ctrl+Shift+5) |
Without my rule, Ctrl+L in the terminal goes to radian, which clears the screen. workbench.action.terminal.clear also clears VS Code’s scrollback. In the editor, Ctrl+L keeps its other bindings.
My default terminal profile is R Terminal (terminal.integrated.defaultProfile.windows, see Settings), so every new terminal from these keys is an R terminal running radian. Inside the terminal, Ctrl+Shift+; does nothing; Ctrl+N opens a new terminal there.
Ctrl+W and Ctrl+N in the editor and the terminal
The same two keys mean “close” and “new” in both places: for a file in the editor, for a terminal in the terminal. It takes removals plus rules with opposite when clauses.
Ctrl+W:
- By default,
Ctrl+Wrunsworkbench.action.closeActiveEditoreverywhere, andworkbench.action.terminal.killEditorin a terminal that is open in the editor area. - Both defaults are removed (see Disabled default keybindings).
workbench.action.closeActiveEditorcomes back with!terminalFocus, andworkbench.action.terminal.killis added withterminalFocus.
Result: in the editor, Ctrl+W closes the file. In the terminal (in the panel or the editor area), it kills the terminal. Without this, Ctrl+W in the terminal would close the file in the editor, not the terminal.
Ctrl+N:
- By default,
Ctrl+Nrunsworkbench.action.files.newUntitledFileeverywhere. - That default is removed.
r.newFileDocumentis added for a writable editor with the cursor in it, andworkbench.action.terminal.newfor the terminal.
Result: in the editor, Ctrl+N opens a new R file; in the terminal, a new terminal. Anywhere else (the Explorer, an empty window, a read-only editor), Ctrl+N does nothing; File → New Text File still works there.
VS Code handles these terminal commands itself instead of passing the key to the shell, so they work while the cursor is in radian.
Git and source control
| Keys (as pressed) | Action | When | Replaces default? |
|---|---|---|---|
Ctrl+Up |
Stage (git.stage) |
Source Control view (see below) | List scroll up |
Ctrl+Down |
Unstage (git.unstage) |
Source Control view | List scroll down |
Ctrl+Shift+Up |
Commit (git.commit) |
Source Control view | none |
Ctrl+Shift+Down |
Push (git.push) |
Source Control view | none |
Ctrl+Alt+Shift+M |
Run the task “Git: Return to updated main” (workbench.action.tasks.runTask) |
always | none |
The four Source Control rules share this when:
sideBarVisible && activeViewlet == 'workbench.view.scm' && !editorFocus
So the Source Control view must be open in the primary sidebar, and the cursor must not be in an editor. The commit message box counts as an editor, so the keys do not fire while you type a message; commit from there with the default Ctrl+Enter. Select a file under Changes and press Ctrl+Up to stage it.
git.commit commits the staged changes with the message from the box (it asks for one if the box is empty). git.push pushes the current branch.
The task and its script are described on Snippets and tasks. The binding passes the task’s label as args, so the label in tasks.json and here must stay identical.
Quarto and Markdown
| Keys (as pressed) | Action | When | Replaces default? |
|---|---|---|---|
Ctrl+Alt+L |
Quarto: Preview Content (quarto.previewContentShortcut) |
Quarto, Mermaid or Graphviz (dot) files |
none |
The when is editorLangId == 'dot' || editorLangId == 'mermaid' || editorLangId == 'quarto'. The REST Client extension also uses Ctrl+Alt+L, but only in .http and plain-text files, so they do not clash.
Quarto itself binds the same command to Ctrl+Shift+L; this rule adds a second key for it. Previewing the whole document is quarto.preview on Ctrl+Shift+K.
Layout presets
| Keys (as pressed) | Action | When | Replaces default? |
|---|---|---|---|
Ctrl+K, Ctrl++ (US: Ctrl+K, Ctrl+1) |
Preset 1, laptop: primary sidebar 2 steps, secondary sidebar 4 steps (runCommands) |
always | Fold Level 1 |
Ctrl+K, Ctrl+ě (US: Ctrl+K, Ctrl+2) |
Preset 2, external monitor: primary 4 steps, secondary 7 steps (runCommands) |
always | Fold Level 2 |
The key strings are ctrl+k ctrl+[Digit1] and ctrl+k ctrl+[Digit2]: scan codes, so the same physical keys on every layout.
How the presets work
VS Code has no command that sets a sidebar to a given width. It can only grow or shrink parts of the window step by step, so each preset is a long list of such steps. runCommands is built into VS Code; it runs the commands in args.commands one after the other (no extension needed).
Each sidebar ends at about its minimum width (around 170 px) plus N steps of about 60 px. Zoom and display scaling change the pixel values.
Two facts drive the sequence:
workbench.action.increaseViewWidthandworkbench.action.decreaseViewWidthalways resize the editor area. The space comes from, or goes to, the primary sidebar first, then the secondary sidebar.workbench.action.increaseViewSizeandworkbench.action.decreaseViewSizeresize the focused part. But VS Code does not notice focus inside a webview (such as a chat view in the secondary sidebar), so these cannot size the secondary sidebar directly.
So the secondary sidebar is sized indirectly. Preset 1, step by step:
workbench.action.closeSidebar: hide the primary sidebar. Hidden, it absorbs nothing.workbench.action.increaseViewWidth, 20 times: grow the editor area. The space comes from the secondary sidebar until it is at its minimum.workbench.action.decreaseViewWidth, 4 times: shrink the editor 4 steps. The secondary sidebar gets them: minimum plus 4 steps.workbench.action.focusSideBar: reopen and focus the primary sidebar. It takes its space from the editor.workbench.action.decreaseViewSize, 20 times: shrink the focused primary sidebar to its minimum.workbench.action.increaseViewSize, 2 times: grow it 2 steps.workbench.action.focusActiveEditorGroup: put the cursor back in the editor.
| Preset | increaseViewWidth |
decreaseViewWidth (secondary N) |
decreaseViewSize |
increaseViewSize (primary N) |
|---|---|---|---|---|
| 1 (laptop) | 20 | 4 | 20 | 2 |
| 2 (external monitor) | 20 | 7 | 20 | 4 |
The presets need a single editor group. With split editors, the width commands resize the groups instead of the sidebars. Join the groups first (View → Editor Layout → Single).
Tuning a preset
- Secondary sidebar: change the number of
workbench.action.decreaseViewWidthlines. N lines give minimum plus N steps. - Primary sidebar: change the number of
workbench.action.increaseViewSizelines. - The 20s only push a part to its limit; extra steps at the limit do nothing. If a sidebar does not reach its minimum on a very wide screen, add more of those lines.
The presets override the default Fold Level 1 and Fold Level 2 (Ctrl+K Ctrl+1, Ctrl+K Ctrl+2). Those are still in the Command Palette (Fold Level 1, Fold Level 2), and the other folding keys (such as Ctrl+K Ctrl+0 fold all and Ctrl+K Ctrl+J unfold all) are untouched.
Disabled default keybindings
| Keys (as pressed) | Action | When | Replaces default? |
|---|---|---|---|
Ctrl+W |
Remove workbench.action.terminal.killEditor |
the default’s (terminal in the editor area, see below) | Kill terminal editor |
Ctrl+W |
Remove workbench.action.closeActiveEditor |
always | Close Editor |
Ctrl+N |
Remove workbench.action.files.newUntitledFile |
always | New Untitled Text File |
Ctrl+Shift+; (US: Ctrl+Shift+`) |
Remove workbench.action.terminal.new |
the default’s (see below) | New Terminal |
Ctrl+Alt+I |
Remove editor.action.insertSnippet |
editorTextFocus && !editorReadonly |
an extension’s insert-snippet binding |
Ctrl+Shift+B |
Remove workbench.action.tasks.build |
taskCommandsRegistered |
Run Build Task |
Ctrl+Shift+B |
Toggle the primary sidebar (workbench.action.toggleSidebarVisibility) |
always | Run Build Task |
Ctrl+B |
Remove workbench.action.toggleSidebarVisibility |
always | Toggle Primary Sidebar |
Notes:
- The full
whenof thekillEditorremoval isterminalEditorFocus && terminalFocus && terminalHasBeenCreated && resourceScheme == 'vscode-terminal' || terminalEditorFocus && terminalFocus && terminalProcessSupported && resourceScheme == 'vscode-terminal': a terminal open as a tab in the editor area. - The full
whenof theterminal.newremoval isterminalProcessSupported || terminalWebExtensionContributedProfile, the default’s own condition. - Run Build Task is still in the Command Palette (Tasks: Run Build Task).
- After the removal,
Ctrl+Bdoes nothing in most places. In Markdown, R Markdown and Quarto files, the Markdown All in One extension uses it for bold.
R-Lecturer
My teaching profile R-Lecturer has no keybindings of its own: VS Code’s and the extensions’ defaults apply.
The full file
Show the full file: R/keybindings.json
// ============================================================================
// VS Code Keybindings Configuration
// ============================================================================
// Place your key bindings in this file to override the defaults
[
{
"description": "Insert Triple Backticks",
"key": "ctrl+shift+oem_2",
"command": "type",
"args": {
"text": "```"
}
},
// ========================================================================
// R LANGUAGE SPECIFIC KEYBINDINGS
// ========================================================================
// R Documentation and Help
{
"description": "R Build Docs",
"key": "ctrl+shift+d",
"command": "r.document",
"when": "resourceLangId == 'r'"
},
{
"description": "R Show Documentation",
"key": "f1",
"command": "r.helpPanel.openForSelection",
"when": "editorLangId == 'r' || editorTextFocus && editorLangId == 'rmd' || editorTextFocus && editorLangId == 'quarto'"
},
// R Code Snippets and Operators
{
"description": "R Pipe Operator (editor)",
"key": "ctrl+shift+m",
"command": "type",
"args": {
"text": " |> "
},
"when": "editorTextFocus"
},
{
"description": "R Pipe Operator (terminal)",
"key": "ctrl+shift+m",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": " |> "
},
"when": "terminalFocus"
},
{
"description": "R Assignment Arrow (editor)",
"key": "ctrl+shift+,",
"command": "type",
"args": {
"text": " <- "
},
"when": "editorTextFocus"
},
{
"description": "R Assignment Arrow (terminal)",
"key": "ctrl+shift+,",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": " <- "
},
"when": "terminalFocus"
},
// R Tools and Utilities
{
"description": "R Create Reprex",
"key": "ctrl+shift+x",
"command": "r.runCommand",
"args": "reprex::reprex()",
"when": "resourceLangId == 'r'"
},
{
"description": "View: Show R Workspace",
"key": "ctrl+shift+w",
"command": "workbench.view.extension.workspaceViewer"
},
{
"description": "R Show Plot Viewer Beside Editor",
"key": "ctrl+alt+p",
"command": "r.runCommand",
"when": "editorTextFocus && editorLangId == 'r'",
"args": ".vsc.browser(httpgd::hgd_url(), viewer = \"Beside\")"
},
// ========================================================================
// EDITOR KEYBINDINGS
// ========================================================================
// Navigation
{
"description": "Navigate Up 10 Lines",
"key": "shift+alt+up",
"command": "cursorMove",
"args": {
"to": "up",
"by": "line",
"value": 10
},
"when": "editorTextFocus"
},
{
"description": "Navigate Down 10 Lines",
"key": "shift+alt+down",
"command": "cursorMove",
"args": {
"to": "down",
"by": "line",
"value": 10
},
"when": "editorTextFocus"
},
// Symbols and Search
{
"description": "Show All Symbols",
"key": "ctrl+oem_period",
"command": "workbench.action.showAllSymbols"
},
// File Operations
{
"description": "New R File",
"key": "ctrl+n",
"command": "r.newFileDocument",
"when": "editorTextFocus && !editorReadonly"
},
{
"description": "Close Active Editor",
"key": "ctrl+w",
"command": "workbench.action.closeActiveEditor",
"when": "!terminalFocus"
},
// Autocomplete and Suggestions
{
"description": "Force Autocomplete",
"key": "ctrl+alt+i",
"command": "editor.action.inlineSuggest.trigger",
"when": "editorTextFocus && !editorReadonly"
},
// ========================================================================
// TERMINAL KEYBINDINGS
// ========================================================================
// Terminal Management
{
"description": "Clear Terminal",
"key": "ctrl+l",
"command": "workbench.action.terminal.clear",
"when": "terminalFocus"
},
{
"description": "Kill Terminal",
"key": "ctrl+w",
"command": "workbench.action.terminal.kill",
"when": "terminalFocus"
},
{
"description": "New Terminal (when in terminal)",
"key": "ctrl+n",
"command": "workbench.action.terminal.new",
"when": "terminalFocus"
},
{
"description": "New Terminal in Active Workspace",
"key": "ctrl+shift+oem_3",
"command": "workbench.action.terminal.newInActiveWorkspace",
"when": "!terminalFocus"
},
{
"description": "Split Terminal",
"key": "ctrl+alt+oem_3",
"command": "workbench.action.terminal.split",
"when": "terminalFocus"
},
// ========================================================================
// GIT/SCM KEYBINDINGS
// ========================================================================
{
"description": "Git Stage",
"key": "ctrl+up",
"command": "git.stage",
"when": "sideBarVisible && activeViewlet == 'workbench.view.scm' && !editorFocus"
},
{
"description": "Git Unstage",
"key": "ctrl+down",
"command": "git.unstage",
"when": "sideBarVisible && activeViewlet == 'workbench.view.scm' && !editorFocus"
},
{
"description": "Git Commit",
"key": "ctrl+shift+up",
"command": "git.commit",
"when": "sideBarVisible && activeViewlet == 'workbench.view.scm' && !editorFocus"
},
{
"description": "Git Push",
"key": "ctrl+shift+down",
"command": "git.push",
"when": "sideBarVisible && activeViewlet == 'workbench.view.scm' && !editorFocus"
},
{
"key": "ctrl+alt+shift+m",
"command": "workbench.action.tasks.runTask",
"args": "Git: Return to updated main"
},
// ========================================================================
// QUARTO/MARKDOWN KEYBINDINGS
// ========================================================================
{
"description": "Quarto Preview Content (diagram, math or cell at the cursor)",
"key": "ctrl+alt+l",
"command": "quarto.previewContentShortcut",
"when": "editorLangId == 'dot' || editorLangId == 'mermaid' || editorLangId == 'quarto'"
},
// ========================================================================
// LAYOUT PRESETS
// ========================================================================
// Sidebar width presets per monitor. Width ~= minimum (~170 px) + N steps
// (60 px, scaled by zoom/DPI). Tune N via the counts in each description.
// Keys use scan codes ([Digit1] = "+" key, [Digit2] = "e-caron" key on
// the CZ layout), so they work regardless of the active keyboard layout.
// They override the default Fold Level 1/2 (ctrl+k ctrl+1/2).
// How it works (VS Code 1.140):
// - increase/decreaseViewWidth always resize the editor area. Editor size
// changes are absorbed by the primary sidebar first, then the secondary.
// - increase/decreaseViewSize resize the focused part, but focus inside a
// webview (Claude Code) is not detected, so the secondary sidebar is set
// indirectly: hide the primary sidebar (it then absorbs nothing), grow
// the editor to push the secondary sidebar to its minimum, then shrink
// the editor N steps. Reopening the primary sidebar takes space from the
// editor, and it is then reset to minimum + N steps via ViewSize.
// - Requires a single editor group; with split editors, editor resizes
// change the group sizes instead.
{
"description": "Layout Preset 1 (laptop): primary 2 steps, secondary 4 steps",
"key": "ctrl+k ctrl+[Digit1]",
"command": "runCommands",
"args": {
"commands": [
"workbench.action.closeSidebar",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.decreaseViewWidth",
"workbench.action.decreaseViewWidth",
"workbench.action.decreaseViewWidth",
"workbench.action.decreaseViewWidth",
"workbench.action.focusSideBar",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.increaseViewSize",
"workbench.action.increaseViewSize",
"workbench.action.focusActiveEditorGroup"
]
}
},
{
"description": "Layout Preset 2 (external monitor): primary 4 steps, secondary 7 steps",
"key": "ctrl+k ctrl+[Digit2]",
"command": "runCommands",
"args": {
"commands": [
"workbench.action.closeSidebar",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.increaseViewWidth",
"workbench.action.decreaseViewWidth",
"workbench.action.decreaseViewWidth",
"workbench.action.decreaseViewWidth",
"workbench.action.decreaseViewWidth",
"workbench.action.decreaseViewWidth",
"workbench.action.decreaseViewWidth",
"workbench.action.decreaseViewWidth",
"workbench.action.focusSideBar",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.decreaseViewSize",
"workbench.action.increaseViewSize",
"workbench.action.increaseViewSize",
"workbench.action.increaseViewSize",
"workbench.action.increaseViewSize",
"workbench.action.focusActiveEditorGroup"
]
}
},
// ========================================================================
// DISABLED DEFAULT KEYBINDINGS
// ========================================================================
{
"key": "ctrl+w",
"command": "-workbench.action.terminal.killEditor",
"when": "terminalEditorFocus && terminalFocus && terminalHasBeenCreated && resourceScheme == 'vscode-terminal' || terminalEditorFocus && terminalFocus && terminalProcessSupported && resourceScheme == 'vscode-terminal'"
},
{
"key": "ctrl+w",
"command": "-workbench.action.closeActiveEditor"
},
{
"key": "ctrl+n",
"command": "-workbench.action.files.newUntitledFile"
},
{
"key": "ctrl+shift+oem_3",
"command": "-workbench.action.terminal.new",
"when": "terminalProcessSupported || terminalWebExtensionContributedProfile"
},
{
"key": "ctrl+alt+i",
"command": "-editor.action.insertSnippet",
"when": "editorTextFocus && !editorReadonly"
},
{
"key": "ctrl+shift+b",
"command": "-workbench.action.tasks.build",
"when": "taskCommandsRegistered"
},
{
"key": "ctrl+shift+b",
"command": "workbench.action.toggleSidebarVisibility"
},
{
"key": "ctrl+b",
"command": "-workbench.action.toggleSidebarVisibility"
}
]To use a file, switch to the target profile, run Preferences: Open Keyboard Shortcuts (JSON) and paste the content. Settings Sync carries it to the other machines. On a layout other than Czech, see Reusing the file on another layout.