Powershell 自动完成设置。

Powershell 自动完成设置。

我想知道是否有办法改变当前 powershell 自动完成的工作方式。我一直在使用 bash,并对其进行了更改,以提供一些我希望在 powershell 体验中使用的功能。

目前,当我使用文件夹编写命令时,powershell 会自动完成制表符并循环显示我的文件夹。我喜欢这种工作方式,但我怀念的一个功能是使用命令的部分匹配,然后按下向上键,它就会找到与我执行的其余操作相匹配的命令。

所以我会写“echo test”,然后我会写其他命令并尝试“ec”,然后点击“echo test”就会完成,而不是我输入的最后一个命令

只是想知道有没有什么办法可以把它恢复过来?

答案1

我怀念的一个功能是使用命令的部分匹配并点击up

您可以使用PSReadLine(受 bash 启发的 PowerShell readline 实现)为此:

读取行

此模块取代了 PowerShell.exe 3 及更高版本中的命令行编辑体验。它提供:

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

...

要设置您自己的自定义键绑定,请使用 cmdlet Set-PSReadlineKeyHandler。例如,为了获得更好的历史记录体验,请尝试:

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

使用这些绑定,如果当前命令行为空,向上箭头/向下箭头将像 PowerShell/cmd 一样工作。但是,如果您输入了一些文本,它将在历史记录中搜索以当前输入的文本开头的命令。

来源读取行

答案2

使用 Powershell Core,我们可以将 PSReadLine 的 PredictionSource 属性设置为历史获取自动建议。

更多详情请观看 YouTube 视频 https://youtu.be/I0iIZe0dUNw

相关内容