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时;
  • isLinuxisMacisWindows:判断当前操作系统;
  • editorFocus:编辑器具有焦点时;
  • editorHasSelection:编辑器中有文本被选中时;
  • view == someViewId:当当前视图ID等于someViewId时;
  • 等等等

组间排序

控制菜单的分组和排序。不同的菜单拥有不同的默认分组。

editor/context中有这些默认组:

  • navigation- 放在这个组的永远排在最前面;
  • 1_modification - 更改组;
  • 9_cutcopypaste - 编辑组
  • z_commands - 最后一个默认组,其中包含用于打开命令选项板的条目

除了navigation是强制放在最前面之外,其它分组都是按照0-9、a-z的顺序排列的,所以如果你想在1_modification9_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 插件开发相关推荐

  1. VSCode插件开发全攻略(六)开发调试技巧

    更多文章请戳VSCode插件开发全攻略系列目录导航. 前言 在介绍完一些比较简单的内容点之后,我觉得有必要先和大家介绍一些开发中遇到的一些细节问题以及技巧,特别是后面一章节将要介绍WebView的知识 ...

  2. vs code 插件_[VSCode插件开发] 由浅入深,带你了解如何打造百万级产品

    去年,笔者有幸在微软技术暨生态大会上做了个演讲,主题是"从零开始开发一款属于你的 Visual Studio Code 插件". 演讲内容主要覆盖了VS Code插件开发的四个方面 ...

  3. vscode插件开发实践与demo源码

    vscode插件开发实践与demo源码 写在前面 工欲善其事必先利其器.vscode作为优秀的开发工具,给我的日常开发工作提供了极大的便利.其拓展机制更是如此. 但是,最近在做年度专业线任务时,有需要 ...

  4. VSCode插件开发全攻略

    原文:VSCode插件开发全攻略(一)概览 作者:小茗同学 文章索引 VSCode插件开发全攻略(一)概览 VSCode插件开发全攻略(二)HelloWord VSCode插件开发全攻略(三)pack ...

  5. VSCode插件开发 国际化

    内容来源于:vscode 插件开发技巧:国际化 对于一个好的 vscode 插件,若不支持国际化委实可惜,本文介绍一种简单的 i18n 的做法,希望对各位插件开发者有所帮助.这里会从另一个大名鼎鼎的插 ...

  6. VSCode插件开发 浅谈workspace问题

    判断当前是否存在workspace 打开Settings, 有时可以看到这里有一个Workspace, 中文环境下叫做工作区. 什么时候会出现这个Workspace选项呢? 如果现在没有Workspa ...

  7. VSCode 插件开发实例(WebView):微信读书 ^-^边撸代码边看小说^-^

    最终效果 主要代码 package.json {"name": "WeReadForVSCodeJackieZheng","repository&qu ...

  8. vscode插件开发

    作为一个前端开发相信,大家对于vscode非常熟悉.vscode是微软开源的一款基于 Electron 开发的代码编辑器.并且vscode支持通过插件来扩展编辑器的功能,比如Prettier插件帮助我 ...

  9. vscode更换主题的插件_vscode插件开发:定制 vscode 主题插件扩展

    vscode 自带的几款主题都很漂亮,也支持通过用户配置修改一些常用的配色,但是如果想对很多部分的配色进行修改则没那么容易.我们可以通过基于已有主题定制自己的 vscode 主题扩展来实现该目的. v ...

最新文章

  1. LOJ.6053.简单的函数(Min_25筛)
  2. java版spring cloud+spring boot+redis多租户社交电子商务平台(三)SpringBoot用JdbcTemplates访问Mysql...
  3. 判断浏览器是否支持某个css属性
  4. java对象持久化技术_Java对象持久化技术Hibernate 一
  5. swagger-ui.html 404,解决访问swagger2报404问题
  6. 理查森外推法 matlab,数值代数–理查森外推法.doc
  7. 英语学习笔记2019-10-18
  8. Mac neo4j忘记密码,不删除数据处理方法
  9. 汉化)称号插件.php,[管理|信息][UD]NameTags——基于权限的称号插件,兼容计分板,GUI显示[1.7.10-1.12.2]...
  10. python单选题库答案_大学慕课2020用Python玩转数据题库及答案
  11. Oryx 2.1.2版本: src源码编译
  12. Tkinter教程之Frame篇
  13. matlab设计匹配滤波器,利用MATLAB实现匹配滤波器的仿真验证
  14. 六维空间:优秀的教育网IPV6免费资源共享平台!
  15. 微信公众号开发之生成带参数的二维码
  16. CDA数据分析师认证辅导课
  17. 如何彻底删除小黑记事本弹窗
  18. 不可重复读和幻读有什么区别?
  19. pg_restore恢复备份(记录一下)
  20. execution常用表达式整理

热门文章

  1. matlab二进制数组必须,二进制数组操作的数组维度必须匹配。
  2. 什么是数字化转型及落地
  3. HCLE----atd以及备份方式
  4. Java类加载过程简述
  5. 1032 挖掘机技术哪家强(20分)
  6. Linux 进程间通信编程
  7. oracle分区表分区导出,Oracle分区表数据的导入与导出
  8. MySQL的MVCC及实现原理
  9. 刚刚上班的萌新在线入职蒙逼
  10. oracle 消耗资源的语句,oracle查询消耗服务器资源SQL语句