当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 扩展 VSCode

作者:精品下载站 日期:2024-12-14 07:52:44 浏览:15 分类:玩电脑

使用 PowerShell 扩展 VSCode


去年,我有意识地决定将 VS Code 作为我的主要 PowerShell 开发工具。我花了数年时间调整和定制 PowerShell ISE,所以我对过渡有点担心。但我知道掌握 VS Code 的唯一方法(而且我还有很长的路要走)就是一直使用它。使这成为可能的 VSCode 功能之一是 PowerShellEditorServices。许多功能是通过 VS Code 中的 $PSEditor 对象公开的,类似于 PowerShell ISE 中的 $PSISE。不幸的是,关于该主题的 IT 专业人员友好的材料并不多。让我补充一点。

在我的 VS Code 配置文件 ($profile) 中,我添加命令来配置编辑器。我所做的一件事是使用 Register-EditorCommand cmdlet 添加自定义命令。我可以通过访问命令选项板并选择 PowerShell:显示来自 PowerShell 模块的其他命令来获取它们。

[玩转系统] 使用 PowerShell 扩展 VSCode

当我选择该选项时,我会得到可用命令的列表:

[玩转系统] 使用 PowerShell 扩展 VSCode

这些是我在 VSCode 配置文件中定义并添加的命令。就是这样。

我使用 Open Live Writer 来准备博客文章。我的博客使用 Crayon 插件来格式化代码示例。为了加快速度,我可以将必要的 HTML 代码插入到本地源中。在 PowerShell ISE 中,我有一个自定义菜单插件,可以复制选定的文本、插入必要的 HTML 并将结果复制到剪贴板,我可以将其粘贴到 Open Live Writer 中。我需要对 VS Code 做同样的事情。

Function ExportAsCrayon {
    [cmdletbinding()]
    param ([Microsoft.PowerShell.EditorServices.Extensions.EditorContext]$context)

    $text = $context.CurrentFile.GetText($context.SelectedRange).Replace(">", "&gt;").Replace("<", "&lt;").Trim()
    $code = @"
<pre>
$text
</pre>
"@  
    $code | Set-clipboard
    $psEditor.Window.ShowInformationMessage("The selected text has been converted and copied to the clipboard.")
}

您为 VSCode 编写的大多数函数可能会使用 $Context 参数。顾名思义,这会告诉 VSCode 你在哪里,并让你可以访问一些方法和属性。在我的函数中,我使用 CurrentFile 对象和 GetText() 方法来获取所选文本。棘手的是,您需要传递的参数是 $Context 中的 SelectedRange 属性。这是没有很好记录的事情之一。我的代码的其余部分使用 Replace() 方法来转义 HTML 的尖括号字符。这被插入到此处的字符串 $code 中,该字符串被发送到剪贴板。

最后一步是调用 ShowInformationMessage(),它将提供视觉提示。

[玩转系统] 使用 PowerShell 扩展 VSCode

您还可以使用这样的方法:

$pseditor.window.ShowErrorMessage("You made a mistake")
$pseditor.window.ShowWarningMessage("I wouldn't do that if I were you.")

一旦我有了这个函数,我就可以用 VS Code 注册它。

Register-EditorCommand -Name ExportAsCrayon -DisplayName "Export Code as Crayon" -Function ExportAsCrayon

这是一个 PowerShell cmdlet,因此您可以阅读有关它的帮助。名称是编程名称,显示名称是您在下拉列表中看到的内容。

但要访问此命令需要执行几个键盘步骤。 VS Code 充满了键盘快捷键和绑定。我想创建自己的。

不幸的是,当前无法以编程方式创建或定义键盘快捷键。相反,您需要转到“文件”-“首选项”-“键盘快捷键”,然后单击链接来编辑 keybindings.json。

[玩转系统] 使用 PowerShell 扩展 VSCode

默认应用程序设置将位于左侧面板中,您的自定义设置将位于右侧面板中。要添加新的,请在最后一个后面、右方括号之前插入一个逗号。然后输入一组{}。

您需要输入密钥。我将使用 Ctrl+F6。 “命令”的设置将为“PowerShell.InvokeRegisteredEditorCommand”。棘手的部分,也是我花了最长的时间才弄清楚的部分是参数或参数值。该方法非常清楚它要做什么。创建一个“args”键,其值如下所示:“commandName”:“ExportAsCrayon”}。使用您注册的命令的短名称。或者,您可以添加键绑定“何时”处于活动状态的设置。我希望我的编辑器处于活动状态时。这是完整的 json 条目。

{
  "key":"ctrl+f6",
  "command": "PowerShell.InvokeRegisteredEditorCommand",
  "args" : {"commandName": "ExportAsCrayon"},
  "when": "editorTextFocus"
}

保存文件即可使用。如果您没有得到预期的结果或出现错误,请检查您的输入。 Json 区分大小写。 args 条目必须是“commandName”。我通常尝试根据其他键绑定条目来遵循大小写。

但现在我已经准备好了。 Register-EditorCommand 表达式位于我的 VSCode 配置文件中,我只需添加一次键绑定。现在我可以选择文本,按 Ctrl+F6 并将蜡笔格式的代码复制到剪贴板。

我希望这对您有所帮助,并避免您头疼。我想我为我们所有人做的已经够多了。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯