以编程方式列出 powershell 中某些文本的所有补全

以编程方式列出 powershell 中某些文本的所有补全

我正在寻找一个与 bash 函数等效的complete函数,其中我列出了某些文本的所有可能的补全。基本上,如果我反复按 Tab,我会得到所有选项。我知道有像 powertab 这样花哨的东西,但我需要一种方法将它们作为函数的一部分。

我试图实现的是启用运行哑 shell 的劣质进程中的制表符补全。由于我从 stdin/stdout 发送和接收,因此无法使用正常的制表符补全。我希望有一个可以调用的函数,它可以为我提供某些文本的所有补全,否则我就无从下手了。

答案1

众所周知,所有操作系统、语言、脚本工具都有其优点和缺点。

不应期望您习惯或想要的东西会出现在您使用的下一个东西中。如果 X 或 Y 不存在,则意味着您需要 3rdP 附加组件或您必须自己编写。

您可以配置 PowerShell 控制台主机和 ISE 以完成许多操作,其他所有操作都需要编写自己的代码。了解以下键盘快捷键:PowerShell 控制台主机,ISE对于 VSCode

PowerShell 中没有“完成”开关、cmdlet 等。要在 PowerShell 控制台主机中获取您所需的内容,请键入 cmdlet 名称、空格、破折号,然后按 CRTL+空格键。

Get-ChildItem -[CRTL+Spacebar]

在 ISE 和 VSCode 的编辑器窗格中,有动态弹出 IntelliSense。在 ISE 和 VSCode 的控制台中,相同的键盘组合有效。

就这个用例而言……

“我试图实现的是,在运行哑 shell 的低级进程中启用制表符补全。由于我正在从 stdin/stdout 发送和接收,因此无法使用正常的制表符补全。我希望有一个可以调用的函数,它可以为我提供某些文本的所有补全,否则,我就无从下手了。”

...您必须自己编写代码,使用 PowerShell 的可用语言功能,例如:

或者使用 MS PowershellGalery.com 中存在的模块插件

Find-Module -Name '*expansion*' | Format-Table -AutoSize
Find-Module -Name '*completer*' | Format-Table -AutoSize
Find-Module -Name '*tab*' | Format-Table -AutoSize

观看此处的视频: https://channel9.msdn.com/Blogs/trevor-powershell/Authoring-Custom-PowerShell-Intellisense-with-Trevor-Sullivan

还有其他项目,取决于您使用的 PowerShell 版本,您可以实现其他类似 Bash 的功能。例如:

如何使 PowerShell 制表符补全像 Bash 一样工作PowerShell 的新版本包含 PSReadline,可用于执行以下操作:

Set-PSReadlineKeyHandler -Key Tab -Function Complete

为了使其永久生效,请将此命令放入

C:\Users\[User]\Documents\WindowsPowerShell\profile.ps1.

相关内容