首页 > 其他分享 >从0起步,vscode开发一个插件过程,付简单例子

从0起步,vscode开发一个插件过程,付简单例子

时间:2023-12-25 10:47:15浏览次数:40  
标签:文件 插件 Code extension vscode 起步 VS

开发 VS Code 插件需要以下步骤:

安装开发环境:首先,确保你的本地环境已经安装了 Node.js 和 Git。然后,通过 npm 安装 yo 和 generator-code 脚手架工具。

创建插件项目:使用脚手架工具快速生成项目框架。你可以通过运行以下命令来生成插件项目:npm install yo generator-code。

配置插件:在生成的插件项目中,找到 package.json 文件,配置 activationEvents 和 contributes 字段。activationEvents 用于指定插件的触发事件,比如当打开包含某个命名规则的文件夹时插件被激活,或者以某个协议(ftp/sftp/ssh等)打开文件或文件夹时插件被激活。

编写插件逻辑:在 src 文件夹下编写插件的源代码。如果是 JavaScript 插件,则编写 extension.js 文件;如果是 TypeScript 插件,则编写 extension.ts 文件。

测试插件:在测试文件夹下编写测试代码,可以使用 index.ts 或 extension.test.js(如果是 JavaScript)文件进行测试。通过运行测试代码来检查插件的功能是否正常。

构建和发布插件:完成开发和测试后,使用 VS Code 的插件构建器构建插件。构建完成后,将插件发布到 VS Code 插件市场或其他插件分发平台。

以上是开发 VS Code 插件的基本步骤,需要注意的是,开发插件需要一定的编程知识和经验,因此如果你是初学者,可能需要先学习一些基本的编程和 VS Code API 知识。同时,为了更好地开发插件,你还需要熟悉 VS Code 的扩展模型和插件生命周期。

简单的 VS Code 插件示例代码,用于在编辑器中显示当前文件的行数

// 导入 VS Code 模块


import * as vscode from 'vscode'; 



// 插件被激活时执行的操作 

export function activate(context: vscode.ExtensionContext) { 

  // 注册命令 

  const disposable = vscode.commands.registerCommand('extension.showLineCount', () => { 

    // 获取当前活动的文本编辑器 

    const activeTextEditor = vscode.window.activeTextEditor; 

    if (activeTextEditor) { 

      // 获取当前文件的行数 

      const lineCount = activeTextEditor.document.lineCount; 

      // 显示行数信息 

      vscode.window.showInformationMessage(`当前文件共有 ${lineCount} 行`); 

    } else { 

      // 没有活动的文本编辑器时显示提示信息 

      vscode.window.showInformationMessage('请打开一个文件'); 

    } 

  }); 



  // 将命令添加到插件的上下文中 

  context.subscriptions.push(disposable); 

} 



// 插件被禁用时执行的操作 

export function deactivate() {}

这个示例代码使用 TypeScript 编写,创建了一个名为 extension.showLineCount 的命令,当用户在命令面板中执行该命令时,会显示当前文件的行数信息。在 activate 函数中,我们注册了这个命令,并在命令被调用时获取当前活动的文本编辑器,并计算文件的行数。最后,我们使用 vscode.window.showInformationMessage 函数显示行数信息。在 deactivate 函数中,我们没有执行任何操作,因为这个示例插件没有需要清理的资源。

要运行这个插件,你可以将其保存为 .ts 文件,并在 VS Code 中打开插件项目文件夹。然后,使用 VS Code 的调试功能运行插件,并按下 F5 键启动调试会话。在调试会话中,你可以打开一个文件并尝试执行 extension.showLineCount 命令来测试插件的功能。

标签:文件,插件,Code,extension,vscode,起步,VS
From: https://www.cnblogs.com/dankex/p/17925618.html

相关文章

  • VSCode 2 min 极速下载与配置
    前言这次来说\(\texttt{MicrosoftVisualStudioCode}\)的\(\texttt{2min}\)极速下载与配置,不需要等待过长的下载时间,不需要自己配置文件,全部快速配置,最快只需要\(\texttt{2}\)分钟(目前只支持\(\texttt{C++}\))。正文基础配置首先要下载\(\texttt{MicrosoftVisualS......
  • VS Code | 重新认识VSCode的界面
    VSCode的整个界面被称为工作台(Workbench)侧边栏,活动栏在默认设置下VSCode的左侧那一栏被称为活动栏,这里有五个组件,它们分别是:文件资源管理器:主要用于浏览以及管理文件和文件夹。跨文件搜索:用于在当前文件夹内进行跨文件的搜索。源代码管理器:对当前文件夹下的代码进行版本管理,VS......
  • vscode+xdebug+phpenv本地调试php代码
    php环境变量先设置环境变量,找到php目录在vscode里安装phpdebug插件点击插件按钮,搜索phpdebug,找到这里标有Xdebug的,点击安装开启Xdebug组件找到对应版本的php去配置php.in文件把这个放到php.ini的最后,如果里面有则根据情况替换即可,端口号要和下面的vscode里面的统一......
  • [香橙派开发系列]3b系统安装和使用vscode进行远程连接
    目录前言一、下载镜像和安装系统二、使用串口助手进行调试三、查看系统的ip地址四、使用vscode连接香橙派最后前言之前研究中断的时候一直出现问题,我怀疑是因为zero3不支持,所以一狠心就花钱买了一块3b。然后那几天在看Linux系统的时候看到很多人都推荐使用debian系统,所以我准备......
  • Vue插件
    功能:用于增强vue本质:包含install方法的一个对象,install的第一个参数是Vue,第二个以后的参数是插件使用者传递的数据。 定义插件(新建一个plugins.js文件):exportdefault{install(Vue,x,y,z){console.log(x,y,z)//全局过滤器Vue.filter('m......
  • Vite Components插件
    作用Components引于unplugin-vue-components,用于解决vue文件内无需手动引入组件,减少import的调用基本配置在vite配置文件中,作为插件使用import{defineConfig}from'vite'importComponentsfrom'unplugin-vue-components/vite'exportdefaultdefineConfig((mode)=......
  • Linux:vscode扩展无法下载,报错:Error while fetching extensions : XHR failed
     在Linux系统上下载安装好vscode以后,发现扩展里面无法下载安装,报错:Error while fetching extensions : XHR failed 解决办法:修改hosts文件1.sudocp/etc/hosts/etc/hosts.bak2.sudovi/etc/hots3.在文件末尾增加下面的文字,然后保存,关闭  4.刷新DNS,Ubuntu22......
  • typora的好用插件
    Typora是一款支持实时预览的Markdown文本编辑器。支持macOS,Windows及Linux/实时预览/图片与文字/代码块/数学公式/图表/目录大纲/文件管理/导入与导出。Typora推荐插件Typora的插件也蛮多的,这里推荐Vlook插件1、简介vlook是孟兆大佬开发的一个插件,V......
  • PySide6学习笔记(一)VSCode配置
    vscode配置(windows)在vscode中安装Python与QTforPython和coderunner插件(推荐)   Python与QTforPython插件开发PySide必备coderunner(可以右键运行py文件)安装PySide6pipinstallPySide6配置QTforpython插件 点击插件设置-拓展设置找到......
  • [插件使用] SwitchHosts自动更新Github Hosts文件
    作者:丶布布......