如何使PowerShell选项卡完成像Bash一样工作
假设我的当前目录中有以下文件:如何使PowerShell选项卡完成像Bash一样工作,powershell,cmd,tab-completion,Powershell,Cmd,Tab Completion,假设我的当前目录中有以下文件: buildBar.bat buildFoo.bat buildHouse.bat 我在命令提示符下键入以下命令,/bu,然后键入TAB 在Bash中,它被扩展为/build 在PowerShell中,它将扩展到列表中的第一项 在Cmd中,行为与PowerShell相同 我更喜欢Bash行为-有没有办法让PowerShell表现得像Bash一样?看看这里,这不是你真正想要的: 但我认为这是PowerShell控制台最好的标签扩展功能 修改TabExpansi
buildBar.bat
buildFoo.bat
buildHouse.bat
我在命令提示符下键入以下命令,/bu
,然后键入TAB
- 在Bash中,它被扩展为
/build
- 在PowerShell中,它将扩展到列表中的第一项
- 在Cmd中,行为与PowerShell相同
我更喜欢Bash行为-有没有办法让PowerShell表现得像Bash一样?看看这里,这不是你真正想要的:
但我认为这是PowerShell控制台最好的标签扩展功能 修改TabExpansion函数以实现所需功能。请记住,如果您再次按tab键,新建议可能会从原来的按键位置修改,直到结束。我非常喜欢实际的行为,我希望这行写得尽可能快。最后,不要忘记通配符扩展,例如:bu*h[Tab]自动完成buildHouse.bat现在可以使用PSReadline让PowerShell完成Bash样式的完成
查看日志。PowerShell的新版本包括PSReadline,可用于执行以下操作:
Set-PSReadlineKeyHandler -Key Tab -Function Complete
若要使其永久化,请将此命令放入C:\Users\[User]\Documents\WindowsPowerShell\profile.ps1。
选项卡
仅完成命令名,而不是其先前的参数/参数
要使用历史记录中的参数自动完成complete命令,请设置以下keybinding
Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward
现在,键入命令名的几个字符,并使用上/下箭头从历史记录中自动完成此命令(带参数)
实时保存程序。使用Powershell Core,我们可以将PSReadLine的PredictionSource属性设置为History,以获得自动建议。有关更多详细信息,请参阅YouTube视频
很有趣。如果有一种方法可以做到这一点,那么很有可能使扩展像bash一样工作。不过,我远不是PowerShell方面的专家,所以可能会遗漏一些东西。当然!开始学习PowerTab模块的代码,尝试满足您的扩展需求。但是PowerTab提供了对几乎任何命令、wmi、comobject和程序集的扩展,并且具有简单的选择方式!修改TabExpansion函数可能是一条路要走,但仍然比我想要的要复杂得多。我想我需要更流利地使用powershell,然后才能处理这个问题。是的,这是我在过去十年左右一直在做的事情,但我正在尝试过渡到powershell,因为我希望能够在没有安装Cygwin的系统以外的系统上使用命令行。博客中的链接已断,然而,在一天结束时,它会给您带来一个现在已经存在的问题,您可以使用一行程序来完成此操作,如下所述:
MenuComplete
而不是Complete
更像bash,它允许您使用箭头键从可用选项中进行选择options@LeBleu真奇怪,因为我的全新Windows 10机器附带了PSReadline。我认为该模块来自Microsoft.BTW,如果您的计算机上不存在profile.ps1文件,您可以使用命令new item$profile-itemtype file-force
生成一个。您的计算机很可能没有C:\Users\[User]\Documents\WindowsPowerShell\profile.ps1。
您实际上需要运行新项目$profile-itemtype file-force
,这对于触摸操作来说是一个非常不方便的拼写:-(
# 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