powershellsearchkey-bindingscommand-history

PowerShell bind arrow keys to command history search


In bash, I can bind the Up and Down arrow keys to history search with

"\e[5~": history-search-backward
"\e[6~": history-search-forward

in ~/.inputrc. If at the prompt I type ca and then the Up key, it will bring the next command line in history that matches ca as the beginning.

Using Ctrl + R for (reverse-i-search) is useful, and PS has this. But I find the bindings above quite more efficient to work.

Can this be achieved with PowerShell?


Solution

  • Add the following lines to your Powershell profile.

    Mine is at %HOME%\Documents\WindowsPowerShell\profile.ps1.

    # Reverse Search
    Set-PSReadLineOption -HistorySearchCursorMovesToEnd
    Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward
    Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward
    

    These are sourced from the powershell PSReadLine repo.

    Funnily enough, we came to ask the same question 12 hours apart :)

    EDIT months later as I still come back to this:

    This provides bash-like autocomplete

    Set-PSReadlineKeyHandler -Key Tab -Function Complete