![Powershell 自动完成设置。](https://linux22.com/image/1527658/Powershell%20%E8%87%AA%E5%8A%A8%E5%AE%8C%E6%88%90%E8%AE%BE%E7%BD%AE%E3%80%82.png)
我想知道是否有办法改变当前 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