How to make PowerShell tab completion work like Bash
Let's say I have the following files in my current directory:
buildBar.bat
buildFoo.bat
buildHouse.bat
And I type the following at my command prompt, ./bu
and then TAB.
In Bash, it gets expanded to
./build
In PowerShell, it gets expanded to
./buildBar.bat
-- the first item in the list.In Cmd, the behavior is the same as PowerShell.
I prefer the Bash behaviour - is there a way to make PowerShell behave like Bash?
New versions of PowerShell include PSReadline, which can be used to do this:
Set-PSReadlineKeyHandler -Key Tab -Function Complete
To make it permanent, put this command into C:\Users\[User]\Documents\WindowsPowerShell\profile.ps1.
It is now possible to get PowerShell to do Bash-style completion, using PSReadline.
Check out blog post Bash-like tab completion in PowerShell.
tab
only completes the command name not its previous arguments/parameters.
to also autocomplete the complete command with arguments from history set the below keybinding.
Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward
Now, type few characters of command name and use up/down arrow to autocomplete this command (with arguments) from history.
real time saver.