首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于 task 为 VSCode 添加自定义的外部命令

基于 task 为 VSCode 添加自定义的外部命令

作者头像
walterlv
发布2018-09-18 13:01:07
2.3K0
发布2018-09-18 13:01:07
举报

基于 task 为 VSCode 添加自定义的外部命令

2018-08-12 12:47

我们有很多全局的工具能在各处使用命令行调用,针对某个仓库特定的命令可以放到仓库中。不过,如果能够直接为顺手的文本编辑器添加自定义的外部命令,那么执行命令只需要简单的快捷键即可,不需要再手工敲了。


写一个外部命令的调用

由于是调用外部工具,所以工具本身用什么语言写已经不重要的了,只要有环境,没有什么是不能执行的。

这里以我博客中使用的外部命令 mdmeta 为例。我将此工具使用 mklink 命令链接到了 /build 文件夹中(当然,如果需要多人协作开发,可以使用 git-lfs 或者 git-submodule 来管理仅项目的外部命令)。关于 mklink 的使用,可以参考 解决 mklink 使用中的各种坑(硬链接,软链接/符号链接,目录链接)

于是,在 /build 文件夹中添加可执行的脚本,例如:

dotnet build\mdmeta\mdmeta.dll wupdate --ignore-in-hour 6

让 VSCode 使用此外部命令

如果你说使用 VSCode 嵌入的终端来使用外部命令,那我们其实没做什么,就像使用普通的脚本或者命令一样。

但是,VSCode 自带有 Tasks 机制,可以将命令与 VSCode 集成。关于 Tasks,可以阅读 VSCode 的官方文档:Tasks in Visual Studio Code

具体来说,是写一个配置文件 /.vscode/tasks.json。

tasks.json 中有少量的默认内容,如果你完全不知道如可开始编写,可以按 F1,选择 Configure ... 随便配置一个 Task,然后基于它修改。

F1
F1

这里,我定义了两个命令:

  • Init Metadata
  • Update Metadata
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Init Metadata",
            "type": "shell",
            "command": "${workspaceRoot}\\build\\mdinit.ps1",
            "problemMatcher": []
        },
        {
            "label": "Update Metadata",
            "type": "shell",
            "command": "${workspaceRoot}\\build\\mdupdate.ps1",
            "problemMatcher": [],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

当然,这是按照我自己的需求写了两个命令,前者用来初始化我的博客仓库,后者用来更新我所有博客文章的 YAML 元数据。

由于后者才是需要频繁使用的命令,所以我将其设为编译类型的命令("kind": "build")。具体来说,设定为编译类型并指定为默认("isDefault": true)将获得 Ctrl+Shift+B 快捷键的原生支持。

使用快捷键执行外部命令

当然,如果你有其他的编译命令,或者你有很多个命令,可以自己指定快捷键。比如我希望按下 Ctrl+U 时更新我的元数据(即执行以上第二条命令),直接在命令上加上 "key": "ctrl+u" 即可。

{
    "label": "Update Metadata",
    "type": "shell",
    "key": "ctrl+u",
    "command": "${workspaceRoot}\\build\\mdupdate.ps1",
    "problemMatcher": [],
    "group": {
        "kind": "build",
        "isDefault": true
    }
}

参考资料

本文会经常更新,请阅读原文: https://walterlv.com/post/add-run-external-executable-tools-for-vscode.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (walter.lv@qq.com)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-08-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基于 task 为 VSCode 添加自定义的外部命令
    • 写一个外部命令的调用
      • 让 VSCode 使用此外部命令
        • 使用快捷键执行外部命令
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档