如何使PowerShell选项卡完成像Bash一样工作

时间:2011-11-25 03:46:44

标签: powershell cmd tab-completion

我们说我目前的目录中有以下文件:

buildBar.bat
buildFoo.bat
buildHouse.bat

我在命令提示符下输入以下内容,./bu,然后 TAB

  • 在Bash中,它会扩展为./build

  • 在PowerShell中,它会扩展为./buildBar.bat - 列表中的第一项。

  • 在Cmd中,行为与PowerShell相同。

我更喜欢Bash行为 - 有没有办法让PowerShell表现得像Bash。

7 个答案:

答案 0 :(得分:93)

PowerShell的新版本包括PSReadline,可用于执行此操作:

Set-PSReadlineKeyHandler -Key Tab -Function Complete

要使其永久化,请将此命令放入C:\ Users \ [User] \ Documents \ WindowsPowerShell \ profile.ps1。

答案 1 :(得分:15)

现在可以使用PSReadline让PowerShell完成Bash样式的完成。

查看博客文章 Bash-like tab completion in PowerShell

答案 2 :(得分:14)

看看这里,不是你真正的渴望:

PowerTab

但我认为是PowerShell控制台的最佳标签扩展功能!!!

答案 3 :(得分:5)

修改TabExpansion函数以实现您想要的效果。请记住,如果再次按Tab键,它可能会一直完成,新建议会从您最初按键的位置进行修改。我非常喜欢实际行为,我希望尽可能快地写入行。最后不要忘记通配符扩展,例如:bu * h [Tab]自动完成buildHouse.bat

答案 4 :(得分:4)

# keep or reset to powershell default
Set-PSReadlineKeyHandler -Key Shift+Tab -Function TabCompletePrevious

# define Ctrl+Tab like default Tab behavior
Set-PSReadlineKeyHandler -Key Ctrl+Tab -Function TabCompleteNext

# define Tab like bash
Set-PSReadlineKeyHandler -Key Tab -Function Complete

答案 5 :(得分:2)

使用Powershell Core,我们可以将PSReadLine的PredictionSource属性设置为历史记录,以获取自动建议。有关更多详细信息,请参阅YouTube视频。 https://youtu.be/I0iIZe0dUNw

答案 6 :(得分:1)

tab仅完成命令名称,而不是其先前的参数/参数。

还要使用历史记录中的参数自动完成完整的命令,请在下面设置键绑定。

Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward

现在,键入命令名称的几个字符,并使用向上/向下箭头从历史记录中自动完成此命令(带有参数)。

实时保护程序。