写代码的时候只想写一个可以自由切换rgba和hex的插件,于是尝试了vscode插件编写。其实网上有很多介绍如何写插件的文章,但是前一两篇好像没有我想写的插件的相关资料,所以我多搜了一下。需求首先,我的需求是插件可以在编辑器上。当我选择文字的时候,在右边的按钮上有一个转换操作按钮,点击它可以触发对选中内容的识别。如果是rgba,会转成hex。如果是hex,则转换为rgba的分解是需要使用插件提供的能力:右键菜单选择文字,替换文字。构建插件项目的功能步骤非常简单。按照官方的指导,安装全局工具包npminstall-gyogenerator-code//运行工具yocode然后工具会进行一系列的查询。类似npminit的运行过程的配置和编码是一个简单的实现,所以输出文件布局基本没有变化。重点在于两个属性:main贡献main:配置函数入口,主要指向src/extension.ts的最终输出文件。贡献:配置命令和菜单(实现右键菜单)配置参考:见注释,"menus":{"editor/context":[{//触发时机,当编辑器选中文本时"when":"editorHasSelection",//触发命令"command":"xxx.exchange",//menu少量配置设置:https://code.visualstudio.com/api/references/contribution-points#Sorting-of-groups"group":"1_modification"}]}编码实现:配置命令后,就可以开始实现了命令,并将import*注册为vscodefrom'vscode';functiontextColorHandle(word:string){让结果=word;//进行颜色值转换处理并返回。如果不是目标文本,则返回原文返回结果;}exportfunctionactivate(context:vscode.ExtensionContext){//注册命令if(editor){//获取选中的文本constdoc=editor.document;constselection=editor.selection;constword=doc.getText(selection);editor.edit(eb=>{//文本替换eb.replace(选择,textColorHandle(word))})}});上下文.subscriptions.push(disposable);}//当你的extension被deactivated时调用这个方法exportfunctiondeactivate(){}虽然官方文档比较全面,但是在翻阅的过程中很难找到你想要的相关配置案例文档,如howto在官方示例git中查找相关资料后完成替换文字。官方插件示例包vsix包需要下载vsce。我遇到的问题是当时自己的代码版本是1.62.x,但是安装的generate-code写的插件只支持1.66.x,所以需要先升级代码版本,否则插件将无法运行。vsce打包经验:看文档找文档太干,插件例子比较关键。参考:https://segmentfault.com/a/11...
