PSReadLine 2.1.0 引入了 预测 IntelliSense 功能。 预测 IntelliSense 根据 PSReadLine 历史记录中的项提供完整的命令建议。 PSReadLine 2.2.2 通过添加对使用高级逻辑提供完整命令建议的插件模块的支持,扩展了预测 IntelliSense 的强大功能。 最新版本 PSReadLine 2.2.6 默认启用预测。
使用预测 IntelliSense
启用预测 IntelliSense 后,预测建议会显示为用户光标后面的彩色文本。 预测 IntelliSense 提供的建议帮助 PowerShell 的新手和有经验的用户基于匹配预测来发现、编辑和执行完整命令。 建议可能来自用户的历史记录和其他特定于域的插件。
前面的图像显示建议的默认值 InlineView
。 按 右箭头 键接受内联建议。 接受建议后,可以先编辑命令行,再按 Enter 运行命令。
PSReadLine 还提供 ListView
建议的演示。
在列表视图中时,可以使用箭头键滚动浏览可用建议。 列表视图还显示预测的来源。
PSReadLine 默认为 InlineView
. 可以通过按 F2 键在两者之间InlineView
ListView
切换。 还可以使用 PredictionViewStyle 参数 Set-PSReadLineOption
更改视图。
管理预测智能代码提示
若要使用预测 IntelliSense,必须安装较新版本的 PSReadLine 。 为获得最佳结果,请安装最新版本的模块。
使用 PowerShellGet 安装 PSReadLine:
Install-Module -Name PSReadLine
或使用新的 PowerShellGet v3 模块进行安装:
Install-PSResource -Name PSReadLine
PSReadLine 可以安装在 Windows PowerShell 5.1 或 PowerShell 7 或更高版本中。 若要使用预测器插件,必须在 PowerShell 7.2 或更高版本中运行。 Windows PowerShell 5.1 可以使用基于历史记录的预测器。
在 PSReadLine 2.2.6 中,默认情况下,IntelliSense 的预测功能会根据以下条件启用:
- 如果支持虚拟终端(VT),并且 PSReadLine 在 PowerShell 7.2 或更高版本中运行, 则 PredictionSource 设置为
HistoryAndPlugin
- 如果支持 VT,并且 PowerShell 中运行的 PSReadLine 早于 7.2, 则 PredictionSource 设置为
History
- 如果不支持 VT,则PredictionSource设置为
None
。
使用以下命令查看当前设置:
Get-PSReadLineOption | Select-Object -Property PredictionSource
可以使用 Set-PSReadLineOption
cmdlet 命令和 PredictionSource 参数更改预测源。
PredictionSource 可设置为:
None
History
Plugin
HistoryAndPlugin
注释
基于历史记录的预测来自 PSReadLine 维护的历史记录。 该历史记录比可以使用 Get-History
的基于会话的历史记录更全面。 有关详细信息,请参阅about_PSReadLine的“命令历史记录”部分。
设置预测颜色
默认情况下,预测显示在用户键入的同一行的浅灰色文本中。 若要支持辅助功能需求,可以自定义预测颜色。 颜色是使用 ANSI 转义序列定义的。 您可以使用 $PSStyle
来生成 ANSI 转义序列。
Set-PSReadLineOption -Colors @{ InlinePrediction = $PSStyle.Background.Blue }
也可以创建自己的。 可以使用以下 ANSI 转义序列还原默认浅灰色预测文本颜色。
Set-PSReadLineOption -Colors @{ InlinePrediction = "`e[38;5;238m" }
有关设置预测颜色和其他 PSReadLine 设置的详细信息,请参阅 Set-PSReadLineOption。
更改密钥绑定
PSReadLine 包含用于导航和接受预测的函数。 例如:
-
AcceptSuggestion
- 接受当前的内嵌建议 -
AcceptNextSuggestionWord
- 接受内联建议中的下一个词 -
AcceptSuggestion
构建在ForwardChar
之内,默认为绑定到RightArrow -
AcceptNextSuggestionWord
是在函数ForwardWord
中生成的,该函数可以绑定到 Ctrl+f
可以使用 Set-PSReadLineKeyHandler
cmdlet 更改密钥绑定。
Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord
使用此绑定时,当光标位于当前编辑行末尾时,按 Ctrl+f 接受内联建议的下一个单词。 可以将其他键绑定到 AcceptSuggestion
和 AcceptNextSuggestionWord
以实现类似功能。 例如,你可能希望让RightArrow接受内联建议中的下一个单词,而不是接受整个建议行。
Set-PSReadLineKeyHandler -Chord "RightArrow" -Function ForwardWord
使用其他预测器插件
Az.Tools.Predictor 模块是预测 IntelliSense 的第一个插件。 它使用机器学习来预测要运行的 Azure PowerShell 命令以及要使用的参数。 有关详细信息和安装说明,请参阅 宣布正式发布 Az.Tools.Predictor。
CompletionPredictor 模块为可以在 PowerShell 中使用 Tab 键补全的任何内容添加 IntelliSense 体验。 将 PSReadLine 设置为 InlineView
时,你将获得正常的选项卡补全体验。 切换到 ListView
后,将获得 IntelliSense 体验。 可以从 PowerShell 库安装 CompletionPredictor 模块。
如前所述, ListView
显示预测的来源。 如果安装了多个插件,则预测按源分组,其中 “历史记录 ”首先列出,然后按照每个插件的加载顺序对预测进行分组。
创建自己的预测器模块
可以使用 C# 编写自己的预测器来创建已编译的 PowerShell 模块。 该模块必须实现 System.Management.Automation.Subsystem.Prediction.ICommandPredictor 接口。 此接口声明用于查询预测结果和提供反馈的方法。
有关详细信息,请参阅 如何创建命令行预测器。