vscode 插件开发
vscode 插件开发
文章目录
- vscode 插件开发
- 【demo】
- menus
- when语句语法有很多,这里列举几个常用的:
- 组间排序
- 几个调试快捷键:
- 代码为什么没生效
- 打开文件
- 这是官网给出的建议,在使用webview之前请考虑以下事项:
- 默认情况下,`vscode-resource:`只能访问以下位置中的资源:
- 发布方式
HTML+JS
【demo】
https://github.com/sxei/vscode-plugin-demo
plugin-Demo
menus
editor/title
是key值,定义这个菜单出现在哪里;when
控制菜单合适出现;command
定义菜单被点击后要执行什么操作;alt
定义备用命令,按住alt
键打开菜单时将执行对应命令;group
定义菜单分组;
目前插件可以给以下场景配置自定义菜单:
- 资源管理器上下文菜单 -
explorer/context
- 编辑器上下文菜单 -
editor/context
- 编辑标题菜单栏 -
editor/title
- 编辑器标题上下文菜单 -
editor/title/context
- 调试callstack视图上下文菜单 -
debug/callstack/context
- SCM标题菜单 -
scm/title
- SCM资源组菜单 -
scm/resourceGroup/context
- SCM资源菜单 -
scm/resource/context
- SCM更改标题菜单 -
scm/change/title
- 左侧视图标题菜单 -
view/title
- 视图项菜单 -
view/item/context
- 控制命令是否显示在命令选项板中 -
commandPalette
when语句语法有很多,这里列举几个常用的:
resourceLangId == javascript
:当编辑的文件是js文件时;resourceFilename == test.js
:当当前打开文件名是test.js
时;isLinux
、isMac
、isWindows
:判断当前操作系统;editorFocus
:编辑器具有焦点时;editorHasSelection
:编辑器中有文本被选中时;view == someViewId
:当当前视图ID等于someViewId
时;- 等等等
组间排序
控制菜单的分组和排序。不同的菜单拥有不同的默认分组。
editor/context
中有这些默认组:
navigation
- 放在这个组的永远排在最前面;1_modification
- 更改组;9_cutcopypaste
- 编辑组z_commands
- 最后一个默认组,其中包含用于打开命令选项板的条目
除了navigation
是强制放在最前面之外,其它分组都是按照0-9、a-z的顺序排列的,所以如果你想在1_modification
和9_cutcopypaste
插入一个新的组别的话,你可以定义一个诸如6_test
几个调试快捷键:
F5
运行Ctrl+F2
停止运行F6
下一步跳过(类似于Chrome的F10
)F5
下一步跳入F8
跳过
代码为什么没生效
代码没生效一般从这几个地方去查找:
activationEvents
里面添加了吗?开发的时候如果老是忘记可以直接设置成*
;- 代码是不是报错了?如前文所说,很多错误是不会暴露出来的,需要手动打开控制台查看;
- 代码是不是忘记引入了?有时候拆分多个文件之后可能忘了引入;
- 逻辑是不是写错了?最好的办法就是debug,这是找问题最快的方法;
- 版本冲突
这里重点说一下最后面的版本冲突,这个甚至可以说是vscode本身的一些bug,经常发现代码莫名其妙地没生效,怎么调试都不对,后来发现运行的根本就不是我们正在开发的那个版本,特别是当你的插件已经发了一版到应用市场并安装后,本地再按F5运行,理论上说debug运行的会覆盖已安装的,但有时候还是会出现异常情况,所以为了以防万一,当出现这种情况时可以先把已经安装的给卸载。
打开文件
打开文件是vscode.window.showTextDocument
而不是vscode.workspace.openTextDocument
,这个根据字面意思很容易搞错,原来老外也有命名不准确的时候啊,哈哈。
vscode.workspace.openTextDocument
仅仅是加载文档并返回一个TextDocument
对象,但是并不在vscode中打开;vscode.window.showTextDocument
则是在vscode中打开一个文档
这是官网给出的建议,在使用webview之前请考虑以下事项:
- 这个功能真的需要放在
VSCode
中吗?作为单独的应用程序或网站会不会更好呢? - webview是实现这个功能的唯一方法吗?可以使用常规VS Code API吗?
- 您的webview是否会带来足够的用户价值以证明其高资源成本?
虽然Webview令人很振奋,因为基于它我们可以随意发挥不受限制,但必须注意还是要慎用,毕竟VSCode是很注重性能的,不能因为你一个插件拖累了整个IDE,一般仅在原有API和功能以及交互方式无法满足你时才需要考虑,另外,设计糟糕的Webview也很容易在VS Code
中让人感觉不舒适,不能让人家一看就觉得你这是一张网页,好看的UI也很重要。
默认情况下,vscode-resource:
只能访问以下位置中的资源:
- 扩展程序安装目录中的文件。
- 用户当前活动的工作区内。
- 当然,你还可以使用
dataURI
直接在Webview中嵌入资源,这种方式没有限制;
发布方式
插件开发完了,如何发布出去分享给他人呢?主要有3种方法:
- 方法一:直接把文件夹发给别人,让别人找到vscode的插件存放目录并放进去,然后重启vscode,一般不推荐;
- 方法二:打包成vsix插件,然后发送给别人安装,如果你的插件涉及机密不方便发布到应用市场,可以尝试采用这种方式;
- 方法三:注册开发者账号,发布到官网应用市场,这个发布和npm一样是不需要审核的。
在编写插件的时候 VSCode 可以让插件设置 Activation Events
来对插件懒加载。比如只有打开了 Markdown 文件才打开对应的插件。这样可以降低无谓的 CPU 和内存使用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9tj6HvRW-1647506746419)(C:\Users\BZL\AppData\Roaming\Typora\typora-user-images\image-20201020213628885.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IMEfPnps-1647506746420)(C:\Users\BZL\AppData\Roaming\Typora\typora-user-images\image-20201020220254961.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w8DNgIMY-1647506746420)(C:\Users\BZL\AppData\Roaming\Typora\typora-user-images\image-20201020220645978.png)]
名称 | 释义 | 接口 |
---|---|---|
Keybinding | 快捷键 |
contributes.keybindings
|
Configuration | 设置(setting) |
contributes.configuration /workspace.getConfiguration
|
Command | 命令 |
vscode.commands /contributes.commands
|
Context Menu | 上下文(右键) |
contributes.menus
|
Data Storage | 数据存储 |
ExtensionContext.workspaceState /ExtensionContext.globalState /ExtensionContext.storagePath /ExtensionContext.globalStoragePath
|
Display Notifications | 显示通知 |
window.showInformationMessage window.showWarningMessage window.showErrorMessage
|
vscode 插件开发相关推荐
- VSCode插件开发全攻略(六)开发调试技巧
更多文章请戳VSCode插件开发全攻略系列目录导航. 前言 在介绍完一些比较简单的内容点之后,我觉得有必要先和大家介绍一些开发中遇到的一些细节问题以及技巧,特别是后面一章节将要介绍WebView的知识 ...
- vs code 插件_[VSCode插件开发] 由浅入深,带你了解如何打造百万级产品
去年,笔者有幸在微软技术暨生态大会上做了个演讲,主题是"从零开始开发一款属于你的 Visual Studio Code 插件". 演讲内容主要覆盖了VS Code插件开发的四个方面 ...
- vscode插件开发实践与demo源码
vscode插件开发实践与demo源码 写在前面 工欲善其事必先利其器.vscode作为优秀的开发工具,给我的日常开发工作提供了极大的便利.其拓展机制更是如此. 但是,最近在做年度专业线任务时,有需要 ...
- VSCode插件开发全攻略
原文:VSCode插件开发全攻略(一)概览 作者:小茗同学 文章索引 VSCode插件开发全攻略(一)概览 VSCode插件开发全攻略(二)HelloWord VSCode插件开发全攻略(三)pack ...
- VSCode插件开发 国际化
内容来源于:vscode 插件开发技巧:国际化 对于一个好的 vscode 插件,若不支持国际化委实可惜,本文介绍一种简单的 i18n 的做法,希望对各位插件开发者有所帮助.这里会从另一个大名鼎鼎的插 ...
- VSCode插件开发 浅谈workspace问题
判断当前是否存在workspace 打开Settings, 有时可以看到这里有一个Workspace, 中文环境下叫做工作区. 什么时候会出现这个Workspace选项呢? 如果现在没有Workspa ...
- VSCode 插件开发实例(WebView):微信读书 ^-^边撸代码边看小说^-^
最终效果 主要代码 package.json {"name": "WeReadForVSCodeJackieZheng","repository&qu ...
- vscode插件开发
作为一个前端开发相信,大家对于vscode非常熟悉.vscode是微软开源的一款基于 Electron 开发的代码编辑器.并且vscode支持通过插件来扩展编辑器的功能,比如Prettier插件帮助我 ...
- vscode更换主题的插件_vscode插件开发:定制 vscode 主题插件扩展
vscode 自带的几款主题都很漂亮,也支持通过用户配置修改一些常用的配色,但是如果想对很多部分的配色进行修改则没那么容易.我们可以通过基于已有主题定制自己的 vscode 主题扩展来实现该目的. v ...
最新文章
- LOJ.6053.简单的函数(Min_25筛)
- java版spring cloud+spring boot+redis多租户社交电子商务平台(三)SpringBoot用JdbcTemplates访问Mysql...
- 判断浏览器是否支持某个css属性
- java对象持久化技术_Java对象持久化技术Hibernate 一
- swagger-ui.html 404,解决访问swagger2报404问题
- 理查森外推法 matlab,数值代数–理查森外推法.doc
- 英语学习笔记2019-10-18
- Mac neo4j忘记密码,不删除数据处理方法
- 汉化)称号插件.php,[管理|信息][UD]NameTags——基于权限的称号插件,兼容计分板,GUI显示[1.7.10-1.12.2]...
- python单选题库答案_大学慕课2020用Python玩转数据题库及答案
- Oryx 2.1.2版本: src源码编译
- Tkinter教程之Frame篇
- matlab设计匹配滤波器,利用MATLAB实现匹配滤波器的仿真验证
- 六维空间:优秀的教育网IPV6免费资源共享平台!
- 微信公众号开发之生成带参数的二维码
- CDA数据分析师认证辅导课
- 如何彻底删除小黑记事本弹窗
- 不可重复读和幻读有什么区别?
- pg_restore恢复备份(记录一下)
- execution常用表达式整理