如何使用 CTRL+Space 在 VSCode 终端中启用 IntelliSense Powershell Cmdlet/参数建议下拉菜单,就像在 ISE 终端中一样?

问题描述 投票:0回答:1

我正在努力将工作从 Powershell ISE 迁移到 VS Code 以进行 PowerShell 编程。

迄今为止最大的问题是获得类似 ISE 的体验。网上关于 VS Code 设置“切换 ISE 模式”的人是错误的。

因为它仅将 VS Code 中的 Window GUI 和位置样式设置为看起来像 ISE。当我键入 PowerShell cmdlet 名称的开头时,我不想只看到选项卡建议列表。因为没啥用。

当我输入时,我在 30 条建议列表中没有看到任何一点:

Get-Win... 

然后按 Ctrl+Space,因为我无法选择其中任何一个来完成我的打字。它基本上告诉您必须按 TAB 30 次才能获得所需的 cmdlet 名称,或者继续编写 cmdlet 名称以使其更具体。

我缺少 VS Code 中的基本 ISE 功能,该功能非常有用。我提供了一个屏幕截图,以便准确显示我的意思。

请帮助我在 VS Code 中找到并启用此选项,因为我仍然无法迁移到 VS Code,因为它不起作用。

enter image description here

powershell visual-studio-code powershell-ise
1个回答
0
投票

注:

  • 我假设您正在谈论 VSCode (Visual Studio Code) 的集成终端中的体验,因此下面的答案通常适用于终端(控制台)。

  • 相比之下,安装了PowerShell扩展后,您已经do编辑器选项卡中获得了所需的体验,即在您键入时自动出现基于列表的补全建议。


注:

  • 虽然这个答案原则上适用于现代、跨平台 PowerShell (Core) 7 版本的 PowerShell 和旧版 Windows PowerShell 版本,但在后者中,您必须手动安装足够新的版本
    PSReadLine
    ,例如使用
    Install-Module -Force -Scope CurrentUser PSReadLine
    获得自动预测。

tl;博士

  • 虽然 PowerShell 附带的PSReadLine模块的

    预测 IntelliSense
    功能支持在您键入时自动提供补全,包括 - 通过选择加入 - 以 list 形式(见下文), 目前没有开箱即用地支持基于语法的补全,仅适用于基于历史的补全。

  • 但是,该功能
  • 支持

    插件模型,允许第三方实现自己的预测源,包括基于假设语法的预测源。截至撰写本文时,我还不知道有这样的模块。

  • 目前,最接近的近似方法是配置常规的、基于语法的制表符补全,以呈现可能补全的“列表”,而不是默认的“内联”表示形式。也就是说,这需要您显式地按
  • Tab

    (或其他键,如果您愿意的话)来显示列表: Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete 与任何 PSReadLine

    配置一样,它仅影响
    current
    会话;要使其在将来也生效,请将命令添加到您的
    • $PROFILE
       文件中。
      
      
      
      
      
      背景资料:
    在 PowerShell 终端(控制台)中,包括 VSCode 的集成终端,当您键入时,会自动提供完成预测(建议),这是由内置的
PSReadLine

模块的

预测性 IntelliSense 功能

(我使用的)提供只需调用下面的预测功能):
预测功能默认启用,命令历史记录和插件模块均充当预测来源

    # This is the default; pass 'None' to *disable* predictions altogether, # or 'History' / 'Plugin' to limit them to being sourced from the # command history / plugin modules only. Set-PSReadLineOption -PredictionSource HistoryAndPlugin
  • 默认预测

    view
    in-line
  • ;为了获得
  • list

    视图,如在 ISE 中一样,您必须运行: # The default is 'InlineView' Set-PSReadLineOption -PredictionView ListView 或者,按 F2

    在内嵌视图和列表视图之间
    切换
    • 如前所述,必须将在未来所有会话中生效的
    • PSReadLine
  • 配置命令(请参阅
  • Set-PSReadLineOption

    )添加到您的 
    $PROFILE
    文件中。
    PowerShell(自 v7.4.x 起)附带

  • 插件,但可以通过
  • PowerShell Gallery

    通过搜索“预测器”获得插件。 其中有一个 Microsoft 发布的模块

      CompletionPredictor
    • ,但它是一个样本

      模块,用于
      说明实现预测器插件模块的技术,如如何创建预测器插件模块中所述。命令行预测器,它指出此类模块必须作为 binary 模块实现,即(通常)在 C# 中。 虽然这个模块只是一个为一些硬编码命令实现基于语法的完成的示例,但它可以用作未来插件模块的基础,该模块将带来完整的、基于语法的制表符完成预测功能的功能。

© www.soinside.com 2019 - 2024. All rights reserved.