11/15/2016
Visual Studio Code Key Bindings
Version 1.7 /updates is now available! Read about the new features and fixes in October.
Overview
TOPICS
Key Bindings for Visual Studio Code
https://github.com/Microsoft/vscodedocs/blob/master/docs/customization/keybindings.md
Visual Studio Code lets you perform most tasks directly from the keyboard. This page lists out the default bindings and describes how you can update them.
Additionally, you can install an extension to use the popular keybindings from your old editor.
Sublime Text Keymap https://marketplace.visualstudio.com/items?itemName=msvscode.sublimekeybindings Sublime Text keyboard shortcuts mapped to VS Code
commands.
Atom Keymap https://marketplace.visualstudio.com/items?itemName=msvscode.atomkeybindings Port of popular Atom keyboard shortcuts for VS Code users.
Note: If you visit this page on a Mac, you will see the key bindings for the Mac. If you visit using Windows or Linux, you will see the
keys for that OS. If you need the key binding for another OS, hover your mouse over the key you are interested in.
Note: The following keys are rendered assuming a standard US keyboard layout. If you use a different keyboard layout, please read
below /docs/customization/keybindings#_keyboardlayouts.
Keyboard Shortcuts Reference
We also have a printable version of these keyboard shortcuts. Help > Keyboard Shortcut Reference displays a condensed PDF version suitable for printing as an easy reference.
Below are links to the three platformspecific versions:
Windows https://go.microsoft.com/fwlink/?linkid=832145
macOS https://go.microsoft.com/fwlink/?linkid=832143
Linux https://go.microsoft.com/fwlink/?linkid=832144
Basic Editing
Key
Command
Command id
Cut line empty selection
editor.action.clipboardCutAction
Copy line empty selection
editor.action.clipboardCopyAction
Delete Line
editor.action.deleteLines
Enter
Insert Line Below
editor.action.insertLineAfter
Enter
Insert Line Above
editor.action.insertLineBefore
Move Line Down
editor.action.moveLinesDownAction
Move Line Up
editor.action.moveLinesUpAction
Copy Line Down
editor.action.copyLinesDownAction
Copy Line Up
editor.action.copyLinesUpAction
Add Selection To Next Find Match
editor.action.addSelectionToNextFindMatch
K D
Move Last Selection To Next Find Match
editor.action.moveSelectionToNextFindMatch
Undo last cursor operation
cursorUndo
Insert cursor at end of each line selected
editor.action.insertCursorAtEndOfEachLineSelected
Select all occurrences of current selection
editor.action.selectHighlights
F2
Select all occurrences of current word
editor.action.changeAll
Select current line
expandLineSelection
Insert Cursor Below
editor.action.insertCursorBelow
Insert Cursor Above
editor.action.insertCursorAbove
Jump to matching bracket
editor.action.jumpToBracket
https://code.visualstudio.com/docs/customization/keybindings
1/12
11/15/2016
Visual Studio Code Key Bindings
Key
Command
Command id
Indent Line
editor.action.indentLines
Outdent Line
editor.action.outdentLines
Home
Go to Beginning of Line
cursorHome
End
Go to End of Line
cursorEnd
Go to End of File
cursorBottom
Go to Beginning of File
cursorTop
PageDown
Scroll Line Down
scrollLineDown
PageUp
Scroll Line Up
scrollLineUp
PageDown
Scroll Page Down
scrollPageDown
PageUp
Scroll Page Up
scrollPageUp
Fold collapse region
editor.fold
Unfold uncollapse region
editor.unfold
K [
Fold collapse all subregions
editor.foldRecursively
K ]
Unfold uncollapse all subregions
editor.unfoldRecursively
K 0
Fold collapse all regions
editor.foldAll
K J
Unfold uncollapse all regions
editor.unfoldAll
K C
Add Line Comment
editor.action.addCommentLine
K U
Remove Line Comment
editor.action.removeCommentLine
Toggle Line Comment
editor.action.commentLine
Toggle Block Comment
editor.action.blockComment
Find
actions.find
Replace
editor.action.startFindReplaceAction
Find Next
editor.action.nextMatchFindAction
Find Previous
editor.action.previousMatchFindAction
Enter
Select All Occurences of Find Match
editor.action.selectAllMatches
Toggle Find Case Sensitive
toggleFindCaseSensitive
Toggle Find Regex
toggleFindRegex
Toggle Find Whole Word
toggleFindWholeWord
Toggle Use of Tab Key for Setting Focus
editor.action.toggleTabFocusMode
unassigned
Toggle Render Whitespace
toggleRenderWhitespace
Toggle Word Wrap
editor.action.toggleWordWrap
Rich Languages Editing
Key
Command
Command id
Space
Trigger Suggest
editor.action.triggerSuggest
Space
Trigger Parameter Hints
editor.action.triggerParameterHints
Format Document
editor.action.formatDocument
K F
Format Selection
editor.action.formatSelection
F12
Go to Definition
editor.action.goToDeclaration
https://code.visualstudio.com/docs/customization/keybindings
2/12
11/15/2016
Key
Visual Studio Code Key Bindings
Command
Command id
F12
Peek Definition
editor.action.previewDeclaration
K F12
Open Definition to the Side
editor.action.openDeclarationToTheSide
Quick Fix
editor.action.quickFix
F12
Show References
editor.action.referenceSearch.trigger
F2
Rename Symbol
editor.action.rename
Replace with Next Value
editor.action.inPlaceReplace.down
Replace with Previous Value
editor.action.inPlaceReplace.up
Expand AST Select
editor.action.smartSelect.grow
Shrink AST Select
editor.action.smartSelect.shrink
K X
Trim Trailing Whitespace
editor.action.trimTrailingWhitespace
K M
Change Language Mode
workbench.action.editor.changeLanguageMode
Navigation
Key
Command
Command id
Show All Symbols
workbench.action.showAllSymbols
Go to Line...
workbench.action.gotoLine
Go to File..., Quick Open
workbench.action.quickOpen
Go to Symbol...
workbench.action.gotoSymbol
Show Problems
workbench.actions.view.problems
F8
Go to Next Error or Warning
editor.action.marker.next
F8
Go to Previous Error or Warning
editor.action.marker.prev
Show All Commands
workbench.action.showCommands
Tab
Navigate Editor Group History
workbench.action.openPreviousRecentlyUsedEditorInGroup
Go Back
workbench.action.navigateBack
Go Forward
workbench.action.navigateForward
Editor/Window Management
Key
Command
Command id
New Window
workbench.action.newWindow
Close Window
workbench.action.closeWindow
Close Editor
workbench.action.closeActiveEditor
K F
Close Folder
workbench.action.closeFolder
unassigned
Cycle Between Editor Groups
workbench.action.navigateEditorGroups
Split Editor
workbench.action.splitEditor
Focus into Left Editor Group
workbench.action.focusFirstEditorGroup
Focus into Side Editor Group
workbench.action.focusSecondEditorGroup
Focus into Right Editor Group
workbench.action.focusThirdEditorGroup
Focus into Editor Group on the Left
workbench.action.focusPreviousGroup
Focus into Editor Group on the Right
workbench.action.focusNextGroup
https://code.visualstudio.com/docs/customization/keybindings
3/12
11/15/2016
Key
Visual Studio Code Key Bindings
Command
Command id
Move Editor Left
workbench.action.moveEditorLeftInGroup
Move Editor Right
workbench.action.moveEditorRightInGroup
Move Active Editor Group Left
workbench.action.moveActiveEditorGroupLeft
Move Active Editor Group Right
workbench.action.moveActiveEditorGroupRight
File Management
Key
Command
Command id
New File
workbench.action.files.newUntitledFile
unassigned
Open File...
workbench.action.files.openFile
Save
workbench.action.files.save
Save All
workbench.action.files.saveAll
Save As...
workbench.action.files.saveAs
Close
workbench.action.closeActiveEditor
Close Others
workbench.action.closeOtherEditors
K W
Close Group
workbench.action.closeEditorsInGroup
unassigned
Close Other Groups
workbench.action.closeEditorsInOtherGroups
unassigned
Close Group to Left
workbench.action.closeEditorsToTheLeft
unassigned
Close Group to Right
workbench.action.closeEditorsToTheRight
K W
Close All
workbench.action.closeAllEditors
Reopen Closed Editor
workbench.action.reopenClosedEditor
K Enter
Keep Open
workbench.action.keepEditor
Tab
Open Next
workbench.action.openNextRecentlyUsedEditorInGroup
Tab
Open Previous
workbench.action.openPreviousRecentlyUsedEditorInGroup
K P
Copy Path of Active File
workbench.action.files.copyPathOfActiveFile
K R
Reveal Active File in Windows
workbench.action.files.revealActiveFileInWindows
K O
Show Opened File in New Window
workbench.action.files.showOpenedFileInNewWindow
unassigned
Compare Opened File With
workbench.files.action.compareFileWith
Display
Key
Command
Command id
Toggle Full Screen
workbench.action.toggleFullScreen
Zoom in
workbench.action.zoomIn
Zoom out
workbench.action.zoomOut
unassigned
Reset Zoom
workbench.action.zoomReset
Toggle Sidebar Visibility
workbench.action.toggleSidebarVisibility
Show Debug
workbench.view.debug
Show Explorer / Toggle Focus
workbench.view.explorer
Show Git
workbench.view.git
Show Search
workbench.view.search
https://code.visualstudio.com/docs/customization/keybindings
4/12
11/15/2016
Key
Visual Studio Code Key Bindings
Command
Command id
Replace in Files
workbench.action.replaceInFiles
Show Extensions
workbench.view.extensions
Toggle Search Details
workbench.action.search.toggleQueryDetails
Open New Command Prompt
workbench.action.terminal.openNativeConsole
Show Output
workbench.action.output.toggleOutput
Toggle Markdown Preview
markdown.showPreview
K V
Open Preview to the Side
markdown.showPreviewToSide
Toggle Integrated Terminal
workbench.action.terminal.toggleTerminal
Preferences
Key
Command
Command id
Open User Settings
workbench.action.openGlobalSettings
unassigned
Open Workspace Settings
workbench.action.openWorkspaceSettings
unassigned
Open Keyboard Shortcuts
workbench.action.openGlobalKeybindings
unassigned
Open User Snippets
workbench.action.openSnippets
unassigned
Select Color Theme
workbench.action.selectTheme
unassigned
Configure Display Language
workbench.action.configureLocale
Debug
Key
Command
Command id
F9
Toggle Breakpoint
editor.debug.action.toggleBreakpoint
F5
Continue
workbench.action.debug.continue
F5
Pause
workbench.action.debug.start
F11
Step Into
workbench.action.debug.stepInto
F11
Step Out
workbench.action.debug.stepOut
F10
Step Over
workbench.action.debug.stepOver
F5
Stop
workbench.action.debug.stop
K I
Show Hover
editor.action.showHover
Tasks
Key
Command
Command id
Run Build Task
workbench.action.tasks.build
unassigned
Run Test Task
workbench.action.tasks.test
Extensions
Key
Command
Command id
unassigned
Install Extension
workbench.extensions.action.installExtension
unassigned
Show Installed Extensions
workbench.extensions.action.showInstalledExtensions
unassigned
Show Outdated Extensions
workbench.extensions.action.listOutdatedExtensions
unassigned
Show Recommended Extensions
workbench.extensions.action.showRecommendedExtensions
https://code.visualstudio.com/docs/customization/keybindings
5/12
11/15/2016
Key
Visual Studio Code Key Bindings
Command
Command id
unassigned
Show Popular Extensions
workbench.extensions.action.showPopularExtensions
unassigned
Update All Extensions
workbench.extensions.action.updateAllExtensions
Customizing Shortcuts
All keyboard shortcuts in VS Code can be customized via the User/keybindings.json file.
To configure keyboard shortcuts the way you want, go to the menu under File > Preferences > Keyboard Shortcuts. Code > Preferences > Keyboard Shortcuts on Mac
This will open the Default Keyboard Shortcuts on the left and your User/keybindings.json file where you can overwrite the default bindings on the right.
The list above isn't exhaustive. More commands may be listed under "Here are other available commands" in Default Keyboard Shortcuts .
Keyboard Rules
The keyboard shortcuts dispatching is done by analyzing a list of rules that are expressed in JSON. Here are some examples:
// Keybindings that are active when the focus is in the editor
{ "key": "home",
"command": "cursorHome",
{ "key": "shift+home",
"command": "cursorHomeSelect",
"when": "editorTextFocus" },
"when": "editorTextFocus" },
// Keybindings that are complementary
{ "key": "f5",
"command": "workbench.action.debug.continue", "when": "inDebugMode" },
{ "key": "f5",
"command": "workbench.action.debug.start",
"when": "!inDebugMode" },
// Global keybindings
{ "key": "ctrl+f",
{ "key": "alt+left",
{ "key": "alt+right",
"command": "actions.find" },
"command": "workbench.action.navigateBack" },
"command": "workbench.action.navigateForward" },
// Global keybindings using chords (two separate keypress actions)
{ "key": "ctrl+k enter",
"command": "workbench.action.keepEditor" },
{ "key": "ctrl+k ctrl+w",
"command": "workbench.action.closeAllEditors" },
Each rule consists of:
a key that describes the pressed keys.
a command containing the identifier of the command to execute.
an optional when clause containing a boolean expression that will be evaluated depending on the current context.
Chords two separate keypress actions are described by separating the two keypresses with a space. E.g.: ctrl+k ctrl+c .
When a key is pressed:
the rules are evaluated from bottom to top.
the first rule that matches, both the key and in terms of when , is accepted.
no more rules are processed.
if a rule is found and has a command set, the command is executed.
The additional User/keybindings.json rules are appended at runtime to the bottom of the default rules, thus allowing them to overwrite the default rules. The
User/keybindings.json file is watched by VS Code so editing it while VS Code is running will update the rules at runtime.
Accepted keys
The key is made up of modifiers and the key itself.
The following modifiers are accepted:
Platform
Modifiers
Mac
ctrl+ , shift+ , alt+ , cmd+
Windows
ctrl+ , shift+ , alt+ , win+
Linux
ctrl+ , shift+ , alt+ , meta+
The following keys are accepted:
f1-f19 , a-z , 0-9
`, -, =, [, ], \, ;, ', ,, ., /
left , up , right , down , pageup , pagedown , end , home
tab , enter , escape , space , backspace , delete
pausebreak , capslock , insert
numpad0-numpad9 , numpad_multiply , numpad_add , nupad_separator
numpad_subtract , numpad_decimal , numpad_divide
when Clause Contexts
https://code.visualstudio.com/docs/customization/keybindings
6/12
11/15/2016
Visual Studio Code Key Bindings
when Clause Contexts
VS Code gives you fine control over when your key bindings are enabled through the optional when clause. If you key binding doesn't have a when clause, the key binding is
globally available at all times.
Below are the some of the possible when clause contexts which evaluate to Boolean true/false:
Context name
True when
Editor contexts
editorFocus
An editor has focus, either the text or a widget.
editorTextFocus
The text in an editor has focus cursor is blinking.
editorHasSelection
Text is selected in the editor.
editorHasMultipleSelections
Multiple regions of text are selected multiple cursors.
editorReadOnly
The editor is read only.
editorLangId
True when the editor's associated language Id matches. Example: "editorLangId == typescript" .
Mode contexts
inDebugMode
A debug session is running.
inSnippetMode
The editor is in snippet mode.
inQuickOpen
The Quick Open dropdown has focus.
Editor widget contexts
findWidgetVisible
Editor Find widget is visible.
suggestWidgetVisible
Suggestion widget IntelliSense is visible.
suggestWidgetMultipleSuggestions
Multiple suggestions are displayed.
renameInputVisible
Rename input text box is visible.
referenceSearchVisible
Find All References peek window is open.
inReferenceSearchEditor
The Find All References peek window editor has focus.
config.editor.stablePeek
Keep peek editors open controlled by editor.stablePeek setting.
quickFixWidgetVisible
Quick Fix widget is visible.
parameterHintsVisible
Parameter hints are visible controlled by editor.parameterHints setting.
parameterHintsMultipleSignatures
Multiple parameter hints are displayed.
Integrated terminal contexts
terminalFocus
An integrated terminal has focus.
Global UI contexts
resourceLangId
True when the Explorer or editor title language Id matches. Example: "resourceLangId == markdown"
globalMessageVisible
Message box is visible at the top of VS Code.
searchViewletVisible
Search view is open.
replaceActive
Search view Replace text box is open.
The list above isn't exhaustive and you may see some when contexts for specific VS Code UI in the Default Keyboard Shortcuts .
Removing a specific key binding rule
You can write a key binding rule that targets the removal of a specific default key binding. With the keybindings.json , it was always possible to redefine all the key bindings
of VS Code, but it can be very difficult to make a small tweak, especially around overloaded keys, such as Tab or Escape . To remove a specific key binding, simply add a to the command and the rule will be a removal rule.
Here is an example:
https://code.visualstudio.com/docs/customization/keybindings
7/12
11/15/2016
Visual Studio Code Key Bindings
// In Default Keyboard Shortcuts
...
{ "key": "tab", "command": "tab", "when": ... },
{ "key": "tab", "command": "editor.emmet.action.expandAbbreviation", "when": ... },
{ "key": "tab", "command": "jumpToNextSnippetPlaceholder", "when": ... },
{ "key": "tab", "command": "acceptSelectedSuggestion", "when": ... },
...
// To remove the second rule, for example, add in keybindings.json:
{ "key": "tab", "command": "-editor.emmet.action.expandAbbreviation" }
Keyboard layouts
Note: This section relates only to key bindings, not to typing in the editor.
The keys above are string representations for virtual keys and do not necessarily relate to the produced character when they are pressed. More precisely:
Reference: https://msdn.microsoft.com/enus/library/windows/desktop/dd375731v=vs.85
tab for VK_TAB 0x09
; for VK_OEM_1 0xBA
= for VK_OEM_PLUS 0xBB
, for VK_OEM_COMMA 0xBC
- for VK_OEM_MINUS 0xBD
. for VK_OEM_PERIOD 0xBE
/ for VK_OEM_2 0xBF
` for VK_OEM_3 0xC0
[ for VK_OEM_4 0xDB
\ for VK_OEM_5 0xDC
] for VK_OEM_6 0xDD
' for VK_OEM_7 0xDE
etc.
Different keyboard layouts usually reposition the above virtual keys or change the characters produced when they are pressed. When using a different keyboard layout than the
standard US, Visual Studio Code does the following:
All the key bindings are rendered in the UI using the current system's keyboard layout. For example, Split Editor when using a French France keyboard layout is now
rendered as Ctrl+* :
When editing keybindings.json , VS Code highlights misleading key bindings those that are represented in the file with the character produced under the standard US
keyboard layout, but which need pressing keys with different labels under the current system's keyboard layout. For example, here is how the Default keybindings rules
look like when using a French France keyboard layout:
https://code.visualstudio.com/docs/customization/keybindings
8/12
11/15/2016
Visual Studio Code Key Bindings
There is also a widget that helps input the key binding rule when editing keybindings.json . To launch the Define Keybinding widget, press K K . The widget listens for
key presses and renders the serialized JSON representation in the text box and below it, the keys that VS Code has detected under your current keyboard layout. Once you've
typed the key combination you want, you can press Enter and a rule snippet will be inserted.
Note: Visual Studio Code detects your current keyboard layout on startup and then caches this information. For a good experience,
we recommend restarting VS Code if you change your keyboard layout.
Next Steps
Now that you know about our Key binding support, what's next...
Customization /docs/customization/overview Configure Code the way you want Themes, Settings and more
Language Support /docs/languages/overview Our Good, Better, Best language grid to see what you can expect
Debugging /docs/editor/debugging This is where VS Code really shines
Node.js /docs/runtimes/nodejs End to end Node.js scenario with a sample app
Common Questions
Q: How to find out what command is bound to a specific key?
A: In the Default Keyboard Shortcuts, open Quick Outline by pressing O
https://code.visualstudio.com/docs/customization/keybindings
9/12
11/15/2016
Visual Studio Code Key Bindings
Q: How to add a key binding to an action? E.g. Add Ctrl+D to Delete Lines
A: Find a rule that triggers the action in the Default Keyboard Shortcuts and write a modified version of it in your User/keybindings.json file:
// Original, in Default Keyboard Shortcuts
{ "key": "ctrl+shift+k",
"command": "editor.action.deleteLines",
"when": "editorTextFocus" },
// Modified, in User/keybindings.json, Ctrl+D now will also trigger this action
{ "key": "ctrl+d",
"command": "editor.action.deleteLines",
"when": "editorTextFocus" },
Q: How can I add a key binding for only certain file types?
A: Use the editorLangId context key in your when clause:
{ "key": "shift+alt+a",
"command": "editor.action.blockComment",
"when": "editorTextFocus && editorLangId == csharp" },
Q: I have modified my key bindings in User/keybindings.json , why don't they work?
A: The most common problem is a syntax error in the file. Otherwise, try removing the when clause or picking a different key . Unfortunately, at this point, it is a trial and error
process.
Was this documentation helpful?
Yes
No
Last updated on 11/2/2016
Hello from Seattle.
Follow @code
59.6K followers
Star
19,557
Support https://support.microsoft.com/enus/assistedsupportproducts
Privacy http://www.microsoft.com/privacystatement/enus/core/default.aspx
Terms of Use http://www.microsoft.com/enus/legal/intellectualproperty/copyright/default.aspx
License /License
http://www.microsoft.com
2016 Microsoft
https://code.visualstudio.com/docs/customization/keybindings
10/12
11/15/2016
https://code.visualstudio.com/docs/customization/keybindings
Visual Studio Code Key Bindings
11/12
11/15/2016
https://code.visualstudio.com/docs/customization/keybindings
Visual Studio Code Key Bindings
12/12