基于 task 为 VSCode 添加自定义的外部命令
我们有很多全局的工具能在各处使用命令行调用,针对某个仓库特定的命令可以放到仓库中。不过,如果能够直接为顺手的文本编辑器添加自定义的外部命令,那么执行命令只需要简单的快捷键即可,不需要再手工敲了。
写一个外部命令的调用
由于是调用外部工具,所以工具本身用什么语言写已经不重要的了,只要有环境,没有什么是不能执行的。
这里以我博客中使用的外部命令 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,然后基于它修改。
这里,我定义了两个命令:
- 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
}
}
参考资料
基于 task 为 VSCode 添加自定义的外部命令的更多相关文章
- PHP在linux上执行外部命令
PHP在linux上执行外部命令 一.PHP中调用外部命令介绍二.关于安全问题三.关于超时问题四.关于PHP运行linux环境中命令出现的问题 一.PHP中调用外部命令介绍在PHP中调用外部命令,可以 ...
- 安装好grunt,cmd 提示"grunt不是内部或外部命令" 怎么办?
Grunt和所有grunt插件都是基于nodejs来运行的,因此,必须安装node.js. (一) 去官网http://nodejs.org/ 下载安装包 node-v6.9.2.msi,直接点击安装 ...
- PHP 执行系统外部命令 system() exec() passthru()
区别: system() 输出并返回最后一行shell结果. exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面. passthru() 只调用命令,把命令的运 ...
- scala调用外部命令
scala调用外部命令 1. 导入sys.process包 2. 调用方式:" 外部命令 " ! 双引号内+外部命令+感叹号 例: scala调用外部命令工作原 ...
- PHP调用外部命令
------------------------------------------------------------------ 一.PHP调用外部命令总结 ...
- 基于Mono和VSCode打造轻量级跨平台IDE
近期Visual Studio推出Mac版本号的消息迅速在技术圈里刷屏,当project师们最喜欢的笔记本电脑Mac,邂逅地球上最强大的集成开发环境Visual Studio的时候,会碰撞出如何精 ...
- 20155228 基于VirtualBox安装Ubuntu和学习linux命令的学习经历和心得
一.虚拟机VirtualBox的下载安装 基于VirtualBox虚拟机安装Ubuntu图文教程 虽然娄老师的教程对于VirtualBox的下载安装讲的很简单,可以说是一笔带过,但是我在下载安装的过程 ...
- php -- PHP在linux上执行外部命令,system(),exec(),shell_exec()
目录:一.PHP中调用外部命令介绍二.关于安全问题三.关于超时问题四.关于PHP运行linux环境中命令出现的问题 一.PHP中调用外部命令介绍 在PHP中调用外部命令,有三种方法: 1. 调用专门函 ...
- grunt 不是内部或外部命令,也不是可运行的程序或批处理文件
问题1 grunt 不是内部或外部命令,也不是可运行的程序或批处理文件 解决方法: Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. 安装CLI 在继 ...
随机推荐
- JS实现的base64加密、md5加密及sha1加密详解
1.base64加密 在页面中引入base64.js文件,调用方法为: <!DOCTYPE HTML> <html> <head> <meta charset ...
- angularjs1 自定义图片查看器(可旋转、放大、缩小、拖拽)
笔记: angularjs1 制作自定义图片查看器(可旋转.放大.缩小.拖拽) 2018-01-12 更新 可以在我的博客 查看我 已经封装好的 纯 js写的图片查看器插件 博客链接 懒得把 ...
- phpcms v9 栏目伪静态完全自定义为栏目英文目录名
1,后台增加url规则,增加后.导航上,或分页号上,会自动替换为静态的样式.类似www.abc.com/news/2/ 2表示页码 phpcms v9 的后台扩展,url规则,添加两个规则, 一个是名 ...
- JSP 页面重定向
当需要将文档移动到一个新的位置时,就需要使用JSP重定向了. 最简单的重定向方式就是使用response对象的sendRedirect()方法.这个方法的签名如下: public void respo ...
- Daper返回DataTable
using (IDbConnection conn = OpenConnection()) { string sql = "SELECT TOP 1 * FROM dbo.Students& ...
- ArcMap加载在线地图
SimpleGIS 小小的SimpleGIS除了提供6大地图让人喜爱之外,更有其他的能耐同样让你爱不释手. 功能1:作为出图底图地图提供商中Bing.天地图两家提供的地图是无偏移的地图,所以可直接应用 ...
- 搞懂分布式技术28:微服务(Microservice)那点事
搞懂分布式技术28:微服务(Microservice)那点事 微服务(Microservice)那点事 肥侠 2016-01-13 09:46:53 浏览58371 评论15 分布式系统与计算 微服务 ...
- HDU 4734 F(x) ★(数位DP)
题意 一个整数 (AnAn-1An-2 ... A2A1), 定义 F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1,求[0..B]内有多少 ...
- 三大平衡树(Treap + Splay + SBT)总结+模板
Treap树 核心是 利用随机数的二叉排序树的各种操作复杂度平均为O(lgn) Treap模板: #include <cstdio> #include <cstring> #i ...
- java和python互相调用
java和python互相调用 作者:xuaijun 日期:2017.1.1 python作为一种脚本语言,大量用于测试用例和测试代码的编写,尤其适用于交互式业务场景.实际应用中,很多网管系统 ...