VS Code插件开发初步

文章目录

    • 上手
    • 入口函数
    • contributes

上手

欲善其事必先利其器,无论做什么开发,第一步肯定是下载工具链。VS Code开发主要用到两个东西,一个是项目的手脚架工具Yeoman,可通过yo来安装;另一个是VS Code的扩展时生成器generator-code,本文使用npm安装。

npm install -g yo generator-code

安装完成后,执行yo code指令,并根据提示,按部就班地生成项目,本文用的是js。

>yo code

其最后一个指令是,是否用VS Code打开项目,进入VS Code,点进左侧的运行和调试选项卡(快捷键Ctrl+Shift+D),然后点击侧栏的Run Extension的绿色三角号,这时会弹出一个新的VS Code,在这个新的VS Code中按下F1,输入命令Hello World,从而右下角就会弹出Hello World弹窗,这就是自动创建项目的默认功能。

在这里插入图片描述

此外,开启项目的VS Code,还会在控制台输出

Congratulations, your extension "firstcode" is now active!

入口函数

在脚手架生成的代码中,有三个文件值得注意,分别是

  • extension.js
  • package.json

前者毫无疑问实现了Hello World代码,而后者貌似更加关键,因其包含了一个键值对

"main": "./extension.js"

正是这个键值对,表明extension.js文件是main文件,包含了插件的入口函数。

接下来进入这个js文件,来仔细研读一下这寥寥数行的代码。

const vscode = require('vscode');function activate(context) {console.log('Congratulations, your extension "firstcode" is now active!');let disposable = vscode.commands.registerCommand('firstcode.helloWorld', function () {vscode.window.showInformationMessage('Hello World from firstCode!');});context.subscriptions.push(disposable);
}function deactivate() {}module.exports = {activate,deactivate
}

结合弹出窗口的蛛丝马迹,可以基本确定此文件的功能,其中registerCommand用于注册命令,这个命令的名称是firstcode.helloworld,在调用此命令之后,则通过showInformationMessage,在左下角弹出一个对话框。最后,通过exports将activve函数暴露除去,从而可被调用。

contributes

从实际的使用经验来说,我们在指令输入框中输入的是hello world,而非firstcode.helloworld,为此,只需继续关注package.json,就会发现contributes键下同时出现了二者,

"contributes": {"commands": [{"command": "firstcode.helloWorld","title": "Hello World"}]
},

由此,我们可以大胆猜测,package.json将Hello World暴露给我们,从而当我们在命令输入框中输入Hello World时,就会调用firstcode.helloWorld,进而触发extension.js中定义的函数,实现右下角的弹窗。

实际上,contributes中可供使用的功能不止于此,列表如下,这里面有些东西我也不知道是干嘛的,但仅就已经有了说明的条目而言,均能与日常操作相联系。

说明
breakpoints断点
colors主题颜色
commands命令
configuration配置
configurationDefaults默认的特定于语言的编辑器配置
customEditors自定义编辑器
debuggers调试
grammars
iconThemes
jsonValidation自定义JSON校验
keybindings快捷键绑定
languages新语言支持
menus菜单
problemMatchers
problemPatterns
productIconThemes
resourceLabelFormatters
snippets代码片段
submenus
taskDefinitions
themes颜色主题
typescriptServerPlugins
views左侧边栏
viewsContainers自定义activitybar
viewsWelcome
walkthroughs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/300496.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器视觉系统选型-避免畸变

在定位及高精度测量的系统中,镜头畸变的影响尤其重要 • 使用远心镜头 • 进行系统标定

微信小程序picker组件扩展选择时间到秒插件

创建插件seldatetime // 插件JS部分 Component({// 一些选项options: {// 样式隔离:apply-shared 父影响子,shared父子相互影响, isolated相互隔离styleIsolation:"isolated",// 允许多个插槽multipleSlots: true},// 组件的对外属…

前端项目重构的深度思考和复盘

摘要: 项目重构是每一家稳定发展的互联企业的必经之路, 就像一个产品的诞生, 会经历产品试错和产品迭代 一样, 随着业务或新技术的不断发展, 已有架构已无法满足更多业务扩展的需求, 所以只有通过重构来让产品“进化”, 才能跟上飞速发展的时代浪潮. 技术因素 早期…

人工智能:网络犯罪分子的驱动力

随着 2024 年的临近,是时候展望今年的网络安全状况了。由于网络犯罪日益复杂,预计到 2025 年,全球网络安全成本将增至 10.5 万亿美元。 人工智能的使用不断发展,网络犯罪分子变得越来越有创造力 我们注意到,联邦调查…

用C的递归函数求n!-----(C每日一编程)

用递归函数求n! 有了上面这个递归公式就能写C代码了。 参考代码: int fac(int n) {if (n 1 || n 0)return 1;else return n * fac(n - 1); } void main() {int n;scanf("%d",&n);int f fac(n);printf("\n%d!%d\n", n, f); …

119. 杨辉三角 II(Java)

给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: rowIndex 3 输出: [1,3,3,1]示例 2: 输入: rowIndex 0 输出: [1]示例 3: 输入: rowIndex 1 输出: [1,1]提示…

ARM Cortex-A学习(1):GIC(通用中断控制器)详解

文章目录 1 Cortex-A核中断1.1 处理器模式1.2 IRQ模式 2 GIC的操作2.1 CPU Interface2.2 Distributor GIC(通用中断控制器, Generic Interrupt Controller)是一种用于处理中断的硬件组件,它的主要功能是协调和管理系统中的中断请求,确保它们被正确地传递…

VMware安装linux系统二

1、设置光驱 1.1、编辑虚拟机设置 1.2、设置虚拟机镜像 1.3、设置好后开机 2、安装Linux系统 2.1、等待安装 2.2、开始安装 2.3、选择语言,我选择中文 2.4、本地化不用改 2.5、软件选择一定要选,否则就会是默认最小安装 2.6、我这里选择的是带GUI的&am…

VMvare虚拟机之文件夹共享防火墙设置

目录 一.jdk的配置&TomCat的配置 1.1 jdk配置 1.2 tomcat配置 二.文件夹共享功能 2.1 作用 2.2.高级共享和普通共享 三.防火墙设置 3.1 入站规则和出站规则 四.附图-思维导图 一.jdk的配置&TomCat的配置 建立一个共享文件夹,将jdk文件和tomcat文…

现代 NLP:详细概述,第 1 部分:transformer

阿比吉特罗伊 一、说明 近五年来,随着 BERT 和 GPT 等思想的引入,我们在自然语言处理领域取得了巨大的成就。在本文中,我们的目标是逐步深入研究改进的细节,并了解它们带来的演变。 二、关注就是你所需要的 2017 年,来…

智能优化算法应用:基于减法平均算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于减法平均算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于减法平均算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.减法平均算法4.实验参数设定5.算法结果6.…

H266/VVC帧间预测编码技术概述

帧间预测编码简述 帧间预测利用视频时间域的相关性,使用邻近已编码图像像素值预测当前图像的像素值,能有效去除视频时域冗余。 目前主要的视频编码标准中,帧间预测都采用基于块的运动补偿技术,不同的编码标准有不同的分块方式。 …