PowerShell Keyboard Shortcuts

Complete PowerShell keyboard shortcuts reference — 64 shortcuts across 12 categories. Quick reference cheat sheet for Windows.

Line Editing (3)

ShortcutActionWhat it does
Ctrl + LeftWord LeftMove the cursor one word to the left.
Ctrl + RightWord RightMove the cursor one word to the right.
InsertOverstrike ModeToggle between insert and overwrite mode.

Completion (1)

ShortcutActionWhat it does
Ctrl + SpaceMenu CompleteShow a menu of possible completions and pick with the arrow keys.

History (2)

ShortcutActionWhat it does
UpPrevious CommandRecall the previous command from history.
DownNext CommandRecall the next command from history.

Editing & Clipboard (1)

ShortcutActionWhat it does
EscRevert LineClear the current input.

PSReadLine: Basic editing (18)

ShortcutActionWhat it does
EnterAcceptLineAttempt to execute the current input. If the current input is incomplete (for example there's a missing closing parenthesis, bracket, or quote) then the continuation prompt is displayed on the next line and PSReadLine waits for keys to edit the current input.
Shift + EnterAddLineThe continuation prompt is displayed on the next line and PSReadLine waits for keys to edit the current input. This is useful to enter multi-line input as a single command even when a single line is complete input by itself.
Backspace or Ctrl + HBackwardDeleteCharDelete the character before the cursor.
Ctrl + HomeBackwardDeleteInputLike BackwardKillInput - deletes text from the point to the start of the input, but doesn't put the deleted text in the kill-ring.
Ctrl + Backspace or Ctrl + WBackwardKillWordClear the input from the start of the current word to the cursor. If the cursor is between words, the input is cleared from the start of the previous word to the cursor. The cleared text is placed in the kill-ring.
Ctrl + CCopyCopy selected region to the system clipboard. If no region is selected, copy the whole line.
Ctrl + CCopyOrCancelLineIf text is selected, copy to the clipboard, otherwise cancel the line.
Ctrl + XCutDelete selected region placing deleted text in the system clipboard.
DeleteDeleteCharDelete the character under the cursor.
Ctrl + EndForwardDeleteInputLike KillLine - deletes text from the point to the end of the input, but doesn't put the deleted text in the kill-ring.
Ctrl + EnterInsertLineAboveA new empty line is created above the current line regardless of where the cursor is on the current line. The cursor moves to the beginning of the new line.
Shift + Ctrl + EnterInsertLineBelowA new empty line is created below the current line regardless of where the cursor is on the current line. The cursor moves to the beginning of the new line.
Alt + D or Ctrl + DeleteKillWordClear the input from the cursor to the end of the current word. If the cursor is between words, the input is cleared from the cursor to the end of the next word. The cleared text is placed in the kill-ring.
Ctrl + V or Shift + InsertPastePaste text from the system clipboard.
Ctrl + YRedoUndo an undo.
EscapeRevertLineReverts all input to the current input.
Ctrl + ZUndoUndo a previous edit.
Alt + .YankLastArgYank the last argument from the previous history line. With an argument, the first time it's invoked, behaves just like YankNthArg. If invoked multiple times, instead it iterates through history and arg sets the direction (negative reverses the direction.)

PSReadLine: Completion (3)

ShortcutActionWhat it does
Ctrl + @ or Ctrl + SpacebarMenuCompleteAttempt to perform completion on the text surrounding the cursor. If there are multiple possible completions, the longest unambiguous prefix is used for completion. If trying to complete the longest unambiguous completion, a list of possible completions is displayed.
TabTabCompleteNextAttempt to complete the text surrounding the cursor with the next available completion.
Shift + TabTabCompletePreviousAttempt to complete the text surrounding the cursor with the previous available completion.

PSReadLine: Cursor movement (7)

ShortcutActionWhat it does
LeftArrowBackwardCharMove the cursor one character to the left. This may move the cursor to the previous line of multi-line input.
Ctrl + LeftArrowBackwardWordMove the cursor back to the start of the current word, or if between words, the start of the previous word. Word boundaries are defined by a configurable set of characters.
HomeBeginningOfLineIf the input has multiple lines, move to the start of the current line, or if already at the start of the line, move to the start of the input. If the input has a single line, move to the start of the input.
EndEndOfLineIf the input has multiple lines, move to the end of the current line, or if already at the end of the line, move to the end of the input. If the input has a single line, move to the end of the input.
RightArrowForwardCharMove the cursor one character to the right. This may move the cursor to the next line of multi-line input.
Ctrl + ]GotoBraceGo to the matching brace, parenthesis, or square bracket.
Ctrl + RightArrowNextWordMove the cursor forward to the start of the next word. Word boundaries are defined by a configurable set of characters.

PSReadLine: History (7)

ShortcutActionWhat it does
Alt + F7ClearHistoryClears history in PSReadLine. This doesn't affect PowerShell history.
Ctrl + SForwardSearchHistoryPerform an incremental forward search through history.
F8HistorySearchBackwardReplace the current input with the 'previous' item from PSReadLine history that matches the characters between the start and the input and the cursor.
Shift + F8HistorySearchForwardReplace the current input with the 'next' item from PSReadLine history that matches the characters between the start and the input and the cursor.
DownArrowNextHistoryReplace the current input with the 'next' item from PSReadLine history.
UpArrowPreviousHistoryReplace the current input with the 'previous' item from PSReadLine history.
Ctrl + RReverseSearchHistoryPerform an incremental backward search through history.

PSReadLine: Miscellaneous (10)

ShortcutActionWhat it does
Ctrl + LClearScreenClear the screen and draw the current line at the top of the screen.
Alt + 0 or Alt + 1DigitArgumentStart a new digit argument to pass to other functions. You can use this as a multiplier for the next function that's invoked by a keypress. For example, pressing <Alt+1> <Alt+0> sets the digit-argument value to 10. Then, pressing the # key sends 10 # characters ( ########## ) to the input line. Similarly, you can use this with other operations, like <Delete> or Left-Arrow .
PageDownScrollDisplayDownScroll the display down one screen.
Ctrl + PageDownScrollDisplayDownLineScroll the display down one line.
PageUpScrollDisplayUpScroll the display up one screen.
Ctrl + PageUpScrollDisplayUpLineScroll the display up one line.
F1ShowCommandHelpProvides a view of full cmdlet help. When the cursor is at the end of a fully expanded parameter, hitting the <F1> key positions the display of help at the location of that parameter.
Ctrl + Alt + ?ShowKeyBindingsShow all bound keys.
Alt + HShowParameterHelpProvides dynamic help for parameters by showing it below the current command line like MenuComplete . The cursor must be at the end of the fully expanded parameter name when you press the <Alt+h> key.
Alt + ?WhatIsKeyRead a key and tell me what the key is bound to.

PSReadLine: Prediction (2)

ShortcutActionWhat it does
F4ShowFullPredictionTooltipShow the tooltip of the currently selected list item in the full view.
F2SwitchPredictionViewSwitch the view style for prediction between InlineView and ListView .

PSReadLine: Search (2)

ShortcutActionWhat it does
F3CharacterSearchRead a character and search forward for the next occurrence of that character. If an argument is specified, search forward (or backward if negative) for the nth occurrence.
Shift + F3CharacterSearchBackwardRead a character and search backward for the next occurrence of that character. If an argument is specified, search backward (or forward if negative) for the nth occurrence.

PSReadLine: Selection (8)

ShortcutActionWhat it does
Ctrl + ASelectAllSelect the entire line.
Shift + LeftArrowSelectBackwardCharAdjust the current selection to include the previous character.
Shift + HomeSelectBackwardsLineAdjust the current selection to include from the cursor to the start of the line.
Shift + Ctrl + LeftArrowSelectBackwardWordAdjust the current selection to include the previous word.
Alt + ASelectCommandArgumentMake visual selection of the command arguments. Selection of arguments is scoped within a scriptblock. Based on the cursor position, it searches from the innermost scriptblock to the outmost scriptblock, and stops when it finds any arguments in a scriptblock scope.
Shift + RightArrowSelectForwardCharAdjust the current selection to include the next character.
Shift + EndSelectLineAdjust the current selection to include from the cursor to the end of the line.
Shift + Ctrl + RightArrowSelectNextWordAdjust the current selection to include the next word.
📜 Source: Microsoft Learn — about_PSReadLine_Functions (Windows key mode) + about_Line_Editing. Console and line-editing keys from about_Line_Editing plus every PSReadLine function that has a binding in the default Windows key mode; Emacs and Vi modes differ. Checked 2026-09-06. How we verify ›
📄 View Printable Cheat Sheet — Download as PDF or print · 🧩 Combine with other tools

Related Shortcut Pages

Bash / Shell Windows VS Code Visual Studio Linux Git

Search 18,500+ shortcuts across 268 platforms

Explore All Platforms Practice Shortcuts
🔧 Spotted an error or a missing shortcut? Suggest an edit on GitHub — every accepted fix goes live on this page, the API and the CLI.

PSReadLine is doing the work

Almost everything on this page is provided by PSReadLine, the line-editing module that ships with Windows PowerShell 5.1 and PowerShell 7. Because the bindings live in the module rather than in the console window, they behave the same whether you run PowerShell in Windows Terminal, the legacy console host, or the VS Code integrated terminal.

The history keys are where PSReadLine earns its keep. Ctrl + R opens an interactive reverse search that narrows as you type — the same muscle memory as Bash. F8 is the quieter alternative: type the first few characters of a command, then press it repeatedly to walk back through every history entry with that prefix. And Alt + . pulls the last argument of the previous command into the current line, which turns two-step sequences like mkdir then cd into a single keystroke.

Completion has two gears. Tab cycles through candidates one at a time, while Ctrl + Space opens a menu you can steer with the arrow keys — far better when a cmdlet has thirty parameters. Once a long command is on the line, Alt + A jumps selection from argument to argument so you can swap values without arrowing through the whole string, and Alt + 0 through Alt + 9 repeat the next keystroke that many times.

Making it yours

Run Get-PSReadLineKeyHandler to list every active binding, or press Alt + ? followed by any chord to ask what that key does. If your muscle memory comes from Bash or Vim, Set-PSReadLineOption -EditMode Emacs (or Vi) swaps the whole keymap in one line — add it to your $PROFILE to make it permanent. The prediction view toggle on F2 requires PSReadLine 2.1 or newer; PowerShell 7 includes it, while stock Windows PowerShell 5.1 may need Install-Module PSReadLine to catch up.

Frequently asked questions

Why do some of these shortcuts not work in my terminal?

Two usual causes. Stock Windows PowerShell 5.1 ships an older PSReadLine, so newer functions like the F2 prediction toggle are missing until you update the module. And host applications can intercept chords before PSReadLine sees them — the VS Code terminal, for example, claims several Ctrl combinations for its own keybindings unless you configure it to pass them through.

What is the difference between Ctrl + R and F8?

Ctrl + R is an interactive search: a prompt appears and the match updates as you type, searching anywhere in the command. F8 is prefix-based recall: it uses whatever is already on your line as the starting text and steps backward through matching history entries, with Shift + F8 stepping forward again.

How do I see every key binding at once?

Run Get-PSReadLineKeyHandler for the full table of bound and unbound functions. For a single key, press Alt + ? and then the chord you are curious about — PSReadLine reports which function it maps to without executing anything.

Can I make PowerShell behave like Bash?

Yes — Set-PSReadLineOption -EditMode Emacs enables the readline-style keymap that Bash users expect, and -EditMode Vi does the same for modal editing. Put the line in your $PROFILE so every new session starts with it.

What does the >> prompt mean after Shift + Enter?

Shift + Enter starts a new line without running the command, and PowerShell shows >> as a continuation prompt for each additional line. While editing multi-line input, pressing Home or End twice jumps to the very first or very last line of the whole block.

🤖 Ask AI about PowerShell shortcuts

Open your assistant with this page preloaded as the source — great for follow-up questions like "which of these work in other apps?"

ChatGPT Claude Perplexity Gemini Grok