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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

工具系列:TensorFlow决策森林_(5)使用文本和神经网络特征

文章目录 设置使用原始文本作为特征使用预训练的文本嵌入同时训练决策树和神经网络构建模型训练和评估模型 欢迎来到 TensorFlow决策森林( TF-DF)的 中级教程。 在本文中,您将学习有关 TF-DF的一些更高级的功能,包括如何处理自…

uniapp中如何使用image图片

当在UniApp中使用图片时&#xff0c;可以通过<image>标签将图片显示在页面上。这个标签可以指定src属性来引用图片&#xff0c;并且可以通过mode属性来设置图片的显示模式。除此之外&#xff0c;还可以利用click事件来实现图片的点击事件。在编写代码时&#xff0c;要注意…

shell 编程中内置的变量(冷门又好用)

简介 分别盘点一下 shell 中的内置变量&#xff0c;真的巨好用&#xff01;&#xff01;&#xff01;包括&#xff1a;环境变量类、shell 变量类、终端设置类和其他一些变量。 常用的内置变量目录如下 1. 环境变量类 $MACHTYPE&#xff1a;机器类型 $OSTYPE&#xff1a;操作…

超声系统前端理论与模拟仿真-续

作者&#xff1a;蒋志强 本人同意他人对我的文章引用&#xff0c;但请在引用时注明出处&#xff0c;谢谢&#xff0e;作者&#xff1a;蒋志强 前言 近期整理了一下彩超前端及波束合成相关的内容&#xff0c;很早以前已经有过一次&#xff0c;这次把其它的内容总结一下&#xf…

【自定义磨砂动态背景】前端及pyqt6实现

如何实现一个自定义的磨砂动态背景呢&#xff1f; 这种效果看起来特别的高端&#xff0c;很新颖美观。 具体的效果可以看这里的演示&#xff1a;https://www.bilibili.com/video/BV1zj411H7wd/ 其实原理就是底层有多个多彩多边形在移动&#xff0c;然后再盖上一层模糊滤镜。 前…

测试服务器带宽(ubuntu)

apt install python3 python3-pippip3 install speedtest-clispeestest-cli

通过自然语言处理增强推荐系统:协同方法

一、介绍 自然语言处理 (NLP) 是人工智能的一个分支&#xff0c;专注于使机器能够以有意义且有用的方式理解、解释和响应人类语言。它包含一系列技术&#xff0c;包括情感分析、语言翻译和聊天机器人。 另一方面&#xff0c;推荐系统&#xff08;RecSys&#xff09;是旨在向用户…

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

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

【Unity+AI】SentisAI大模型植入Unity

相关教程 把AI模型放入Unity-手写数字识别【UnitySentis入门-1】_哔哩哔哩_bilibili Unity官方文档创建引擎以运行模型 |森蒂斯 |1.2.0-exp.2 (unity3d.com) 教程转载自&#xff1a;AI Tools for Game Dev 游戏开发人工智能工具/UnitySentis/01-Unity Sentis 入门.md chut…

听GPT 讲Rust源代码--src/tools(27)

File: rust/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs 文件rust/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs的作用是实施Clippy lint规则&#xff0c;检测产生潜在性能问题的字符转换代码&#xff0c;并给出相关建议。 在Rus…

机器人制作开源方案 | 森林管理员

​作者&#xff1a;李佳骏、常睿康、张智斌、李世斌、高华耸 单位&#xff1a;山西能源学院 指导老师&#xff1a;赵浩成、郜敏 1. 研究背景 森林作为地球上可再生自然资源及陆地生态的主体&#xff0c;在人类生存和发展的历史中起着不可代替的作用&#xff0c;它不仅能提供…

多功能视频编码标准 H.266/VVC

视频技术的最新进展潜在地增加了对流传输和广播视频内容的需求。在今日 人们依靠视频来相识并建立联系&#xff0c;借助超高清(Ultra High Definition&#xff0c;UHD)、虚 拟现实(Virtual Reality&#xff0c;VR)和 360 全景视频等技术&#xff0c;人们可以在线捕捉并分享最 快…

119. 杨辉三角 II(Java)

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

彻底卸载Keil4

彻底卸载Keil4 双击 然后回到该软件的文件夹位置&#xff0c;把该文件夹删除即可&#xff0c;然后清一下回收站。

2024年软考电子商务设计师如何备考?考什么?

一、电子商务设计师概述&#xff1f; 电子商务设计师属于软考中级资格考试&#xff0c;软考是由国家人力资源和社会保障部&#xff08;原人事部&#xff09;、工业和信息化部&#xff08;原信息产业部&#xff09;领导的国家级考试&#xff0c;其目的是&#xff0c;科学、公正…

Hive05_DML 操作

1 DML 数据操作 1.1 数据导入 1.1.1 向表中装载数据&#xff08;Load&#xff09; 1&#xff09;语法 hive> load data [local] inpath 数据的 path [overwrite] into table student [partition (partcol1val1,…)];&#xff08;1&#xff09;load data:表示加载数据 &…

20231225在WIN10下使用SSH连接Ubuntu20.04.6

20231225在WIN10下使用SSH连接Ubuntu20.04.6 2023/12/25 23:03 https://jingyan.baidu.com/article/5552ef479e1856108ffbc9e3.html Win10怎么开启SSH功能 Win10怎么开启SSH功能,下面就一起来看看吧! 工具/原料 华硕天选4 Windows10 方法/步骤 点击左下角的开始菜单,打开Wind…

排序算法中In-place和Out-place

参考链接 排序方式中 In-place 和 Out-place&#xff1a; in-place 占用常数内存&#xff0c;不占用额外内存 假如问题规模是n&#xff0c;在解决问题过程中&#xff0c;只开辟了常数量的空间&#xff0c;与n无关&#xff0c;这是原址操作&#xff0c;就是In-place。 例 &…

【论文阅读】MCANet: Medical Image Segmentation with Multi-Scale Cross-Axis Attention

文章目录 摘要创新点总结实现效果总结 摘要 链接&#xff1a;https://arxiv.org/abs/2312.08866 医学图像分割是医学图像处理和计算机视觉领域的关键挑战之一。由于病变区域或器官的大小和形状各异&#xff0c;有效地捕捉多尺度信息和建立像素间的长距离依赖性至关重要。本文提…

学Java的第三天

一、自增自减运算符 &#xff0c;自增&#xff0c;变量的值加一 --&#xff0c;自减&#xff0c;变量的值减一 和-- 既可以放在变量的后边&#xff0c;也可以放在变量的前边。 单独使用的时候&#xff0c; 和 -- 放在变量的前边还是后边&#xff0c;结果是一样的。 参与操作…