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


105

假设我当前目录中有以下文件:

buildBar.bat
buildFoo.bat
buildHouse.bat

然后在命令提示符下键入以下内容,./bu然后单击确定TAB

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

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

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

我更喜欢Bash行为-有没有办法使PowerShell像Bash一样运行?


2
您可以使用Cygwin的bash;)
Blender

12
是的-这是过去十年左右的时间,但是我正尝试过渡到PowerShell,因为我希望能够在非Cygwin以外的系统上在命令行上运行已安装。
RobSiklos 2011年

Answers:


174

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

Set-PSReadlineKeyHandler -Key Tab -Function Complete

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


25
MenuComplete而不是Complete更像bash,它使您可以使用箭头键从可用选项中进行选择
stib

1
@LeBleu这很奇怪,因为我全新的Windows 10机器随附PSReadline。我以为该模块来自Microsoft。
富兰克林·于

8
顺便说一句,如果您的计算机上不存在profile.ps1文件,则可以使用以下命令生成一个文件new-item $profile -itemtype file -force
Reinis

2
您的机器很可能没有C:\Users\[User]\Documents\WindowsPowerShell\profile.ps1.实际运行的需求new-item $profile -itemtype file -force
RF

1
这真是不方便的拼写touch:-(
SamB


15

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

PowerTab

但我认为这是PowerShell控制台的最佳选项卡扩展功能!!!


有趣。如果有办法做到这一点,那么似乎很有可能使扩展工作像在bash中一样。不过,我还远不是PowerShell的专家,因此可能缺少一些东西。
Andriy M

当然!开始研究PowerTab模块的代码以尝试满足您的扩展需求。但是PowerTab可以通过简单的选择方式为几乎所有命令,wmi,comobject,汇编提供扩展!
CB。

7

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

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

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

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

实时保护程序。


5

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


修改TabExpansion函数可能是可行的方法,但仍然比我想要的复杂得多。我想我需要在Powershell中变得更流利,然后才能解决。
RobSiklos 2011年


1
# 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.