是否可以让 Powershell 中的自动完成功能像在 bash 中一样工作?

是否可以让 Powershell 中的自动完成功能像在 bash 中一样工作?

我喜欢 Powershell,但作为 Linux 使用者,有些东西确实让我很烦。例如默认自动完成功能的工作方式。

例如:Get-PS 扩展为“Get-PSBreakpoint”,这是第一个匹配的命令。在 bash 中,如果只有一个命令匹配,bash 将扩展为匹配的命令。如果有多个命令,则一次点击 tab 不会执行任何操作,双击 tab 将显示匹配的命令列表,但不会扩展。有没有办法让 Powershell 表现得像这样?

还有一件事,如果我写了一行,并将标记移回到之前的命令(标记是 ^ 所在的位置):

“Get-PSS^ | Remove-PSSession” 自动完成为“Get-PSSession^”,删除所有尾随命令。在 bash 中,尾随命令仍会保留,不受影响。有没有办法让 Powershell 在自动完成时不删除尾随命令?

额外的好处是可以使用 CTRL+L 来清除屏幕。使用 CTRL+A 可以转到行首,使用 CTRL+E 可以转到行尾。

答案1

查看PSReadline

摘自本文:

此模块取代了 PowerShell.exe 中的命令行编辑体验。它提供:

  • 语法着色
  • 简单语法错误通知
  • 良好的多行体验(编辑和历史记录)
  • 可自定义的按键绑定
  • Cmd 和 emacs 模式(均未完全实现,但均可用)
  • 许多配置选项
  • Bash 样式完成(在 Cmd 模式下可选,在 Emacs 模式下默认)
  • Bash/zsh 风格交互式历史搜索(CTRL-R)
  • Emacs yank/kill 环
  • 基于 PowerShell 令牌的“单词”移动和终止
  • 撤销重做
  • 自动保存历史记录,包括在实时会话间共享历史记录
  • 通过 Ctrl+Space 完成“菜单” (有点像 Intellisense,用箭头选择完成)

我每天都用它!

答案2

也许你应该看看电源表,一个可自定义的 PowerShell Tab 扩展。

答案3

嗨,彼得,只需按F8对于 speedsearch 之类的东西。它会用您之前运行的命令来完成,这些命令以行中的内容开头。删除尾随的问题很烦人,我在 Connect 中针对同一问题写了一条建议。在主要时间,您可以使用 Powershell ISE,它的表现会好一些(不要删除尾随字符)。

答案4

PowerShell 使用与古老的命令提示符相同的控制台功能;因此您有常用的 Home/End,并且:

  • F3调出上一个命令
  • F1从上一个命令中复制一个字符
  • F7弹出历史窗口

...但据我所知,没有设施可以显示所有可能的完成情况。

相关内容