VS Code扩展开发介绍和快速示例

news2024/11/8 17:36:20

VS Code 介绍

VS Code(Visual Studio Code)是一款由微软开发的轻量级的免费开源的源代码编辑器,它支持多种操作系统,包括Windows、macOS和Linux。以下是对VS Code的详细介绍:

一、跨平台支持

  • VS Code是一个真正的跨平台编辑器,可以在Windows、macOS和Linux上运行,满足了不同操作系统用户的需求。

二、丰富的语言支持

  • VS Code支持众多编程语言,包括但不限于JavaScript、Python、C++、Java等。它提供了语法高亮、代码补全、代码片段、自动格式化等功能,有助于开发者编写高质量的代码。

三、强大的扩展性

  • VS Code拥有庞大的扩展生态系统,开发者可以根据自己的需求安装各种扩展插件,以增加额外的功能和工具。这些扩展可以涵盖代码片段、主题、语言支持、调试器等,帮助开发者根据喜好和项目需求进行个性化定制。

四、内置调试器

  • VS Code内置了调试器,可用于调试各种编程语言的代码。开发者可以设置断点、监视变量和表达式的值,以便更好地理解和修复代码中的问题。

五、Git集成

  • VS Code与Git版本控制系统紧密集成,使得开发者能够在编辑器中轻松进行代码的版本控制、提交和分支管理。此外,它还提供了可视化的Git历史记录和冲突解决工具,简化了团队协作的流程。

六、用户友好的界面和布局

  • VS Code的用户界面简洁直观,布局合理,最大化了为编辑器提供的空间,同时留下足够的空间浏览和访问文件夹或项目的完整上下文。界面主要分为活动栏、侧边栏、编辑器、面板和状态栏等部分,便于用户快速上手和操作。

七、丰富的快捷键和自定义功能

  • VS Code提供了丰富的快捷键,用户可以通过快捷键面板查看并自定义快捷键,以提高编码效率。此外,用户还可以根据自己的需求对VS Code进行个性化配置,如更换主题、调整字体大小等。

关于IDE以及功能的扩展

曾几何时,作为集成开发工具,Eclipse占据了 IDE的绝大部分江山。具体的理由可能有:

  1. Eclipse 本身基于Java开发,对Java开发的支持很最佳,而且可以作为很多语言的开发工具,包括 C/C++、PHP、Python、Ruby 等。通过安装相应的插件,Eclipse 可以成为一个多语言开发环境。

  2. Eclipse完全免费

  3. 强大的代码编辑和调试功能:Eclipse 提供了智能代码补全、语法高亮、代码格式化、重构工具等高级编辑功能。此外,它的调试工具也非常强大,支持断点、单步执行、变量查看和修改等。

  4. 集成版本控制:Eclipse 可以与多种版本控制系统(如 Git、SVN)无缝集成,使得代码的版本管理变得简单而高效。

  5. 可视化界面设计工具:对于需要图形用户界面的应用程序,Eclipse 提供了如 WindowBuilder 这样的插件,允许开发者通过拖拽组件来设计界面,大大提高了开发效率。

  6. 广泛的社区支持:Eclipse 有着庞大的用户群体和活跃的社区。这意味着当你遇到问题时,可以很容易地找到解决方案或者得到其他开发者的帮助。

除了上述原因之外,Eclipse的流行还有一个重大的原因就是Eclipse有强大的插件体系,需要哪些功能可以通过插件的方式添加上去,更重要的是Eclipse 提供了插件开发的包和工具,使用SWT可以很容易的在Eclipse上开发插件并发布,所以有很多的工具,甚至商业的软件都是基于Eclipse 的插件开发的产品。

功能强大,跨平台,跨语言,免费是Eclipse的优点,也是其能优于微软的Visual Studio的原因。但是,Eclipse也有一个致命的缺点,就是运行的时候耗费的资源比较多,特别是Memory,有时候CPU的占用也很厉害,所以经常出现的场景是:触发一个项目的Build,需要等待喝完一杯茶甚至更长的时间。而且,随着Web3.0, AI等新技术的发展, React,Angular, Node.js 这些前端技术和Python语言的竞争力上升,Java语言相比就在下降。对IDE的要求,“快”和“强”。

微软在合适的时间推出了VS Code 的产品, 完全免费,支持多语言,功能也支持扩展。这样在思路上基本和Eclipse对标了, 但是VS Code非常快。

  • Eclipse的功能扩展称为plugin, 也就是“插件”, 使用Java语言(SWT)开发。
  • VS Code ,的功能扩展称为Extension, 就是“扩展”,使用JavaScript或TypeScript开发。

因为Eclipse的插件称呼的习惯原因,很多开发者或者文章还是习惯称呼VS Code 的“扩展”为“插件”。为保持和IDE的一致性,本系列全部使用 “扩展”成为VS Code的功能扩展。

VS Code 扩展开发基本介绍

VS Code 扩展开发是指为Visual Studio Code(VS Code)编辑器创建和扩展功能的过程。VS Code扩展开发的基本介绍如下:

  1. 开发环境准备

    • 安装Node.js(推荐较新版本)。
    • 安装npm(Node.js包管理器)。
    • 安装VS Code。
    • 使用npm安装Yeoman和VS Code扩展生成器:npm install -g yo generator-code
  2. 创建插件项目

    • 使用VS Code扩展生成器(Yeoman的generator-code)来创建一个新的VS Code插件项目。
    • 在创建过程中,根据提示输入扩展信息,如扩展名称、描述、作者等。
  3. 编写插件代码

    • 在生成的扩展项目中,可以找到一个名为extension.jsextension.ts的文件,这是扩展的主要逻辑文件。
    • 在这个文件中,可以定义命令、事件处理程序等,通过VS Code API来访问和扩展VS Code的功能。
  4. 测试和调试扩展

    • 在VS Code中打开扩展项目,并按下F5键来运行扩展。这将启动一个新的VS Code窗口,其中开发的扩展将被激活。
    • 可以使用VS Code的调试功能来调试扩展,检查其是否按预期工作。
  5. 发布扩展(可选):

    • 如果希望将开发的扩展分享给其他人,可以使用VS Code的扩展市场(Extensions Marketplace)来发布它。
    • 发布扩展前,你需要确保扩展遵循VS Code的扩展指南,并且已经经过充分的测试。
  6. 使用VS Code的API和功能

    • VS Code提供了丰富的API和功能,可以帮助开发各种类型的扩展,如语法高亮、代码提示、调试支持、版本控制等。
  7. 社区支持和资源

    • VS Code有一个庞大的开发者社区,可以在这里找到许多有用的教程、示例扩展和社区支持。
    • 此外,VS Code的GitHub仓库也是一个很好的资源,可以在这里找到关于VS Code的最新更新、问题和修复等信息。

VS Code 扩展开发的快速示例:

这里快速演示一个扩展开发的示例:

  1. 环境准备

    • 安装 Node.js 和 npm,因为 VS Code 插件开发主要使用 JavaScript 或 TypeScript,并且依赖 npm 来管理项目的依赖。
    • 安装 Yeoman 和 generator-code。Yeoman 是一个通用的脚手架工具,而 generator-code 是为 VS Code 插件开发设计的 Yeoman 生成器,可以快速创建新的 VS Code 插件项目。
 npm install -g yo generator-code

在这里插入图片描述

Node.js 的安装

以Windows 的安装为例:
https://nodejs.org/en/download/prebuilt-installer
在这里插入图片描述

  1. 创建项目

    • 使用 generator-code 创建新的 VS Code 插件项目。

在VS Code的命令终端输入如下命令:


yo code

在这里插入图片描述

在创建过程中,会询问创建的扩展类型(如 TypeScript、JavaScript 等),然后填写扩展的元数据信息(如插件名称、描述、作者等)。

在这里插入图片描述

  1. 编写代码

    • 在生成的项目中,可以看到基本的插件结构,包括package.json(扩展的配置文件)、extension.jsextension.ts(插件的入口文件)等。
    • extension.jsextension.ts中编写扩展的逻辑代码。这个文件是扩展的入口,可以在这里注册命令、定义命令的处理函数等。

在这里插入图片描述

  1. 调试扩展

    • 在 VS Code 中打开你的插件项目,然后按下 F5 进入调试模式。这会启动一个新的 VS Code 窗口,其中加载了开发的扩展。

在这里插入图片描述

*   在新的 VS Code 窗口中,可以通过命令面板(`Ctrl+Shift+P`或`Cmd+Shift+P`)输入你的扩展命令来测试扩展的功能。


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java语言+前端框架html+Thymeleaf +后端框架springboot开发的UWB智能定位系统源码 UWB三维可视化人员定位系统源码

Java语言前端框架htmlThymeleaf 后端框架springboot开发的UWB智能定位系统源码 UWB三维可视化人员定位系统源码 UWB定位系统基于B/S架构的软件和嵌入式硬件都具有很好的扩展性和兼容性,可以与其他系统接口(比如:围界、AB门、高压电网、报警、…

HyperBDR新版本上线,自动化容灾兼容再升级!

本次HyperBDR v5.5.0版本新增完成HCS(Huawei Cloud Stack)8.3.x和HCSO(Huawei Cloud Stack Online)自动化对接,另外还突破性完成了Oracle云(块存储模式)的自动化对接。 HyperBDR,云原生业务级别容灾工具。支…

Vue3【十八】Vue3的生命周期

Vue3【十八】Vue3的生命周期 Vue3【十八】Vue3的生命周期 生命周期 vue组件实例在创建时要经历一系列的初始化步骤,在此过程中vue会在何时的时机, 调用特定的函数,从而让开发者有机会在特定时段运行自己的代码, 这些特定的函数统称…

字符串循环遍历抵消、队列的应用-649. Dota2 参议院

题目链接及描述 649. Dota2 参议院 - 力扣(LeetCode) 题目分析 题目描述的意思:对于一个字符串循环执行抵消操作,(R的个数为1时可以使后续的一个D失效,D的个数为1时可以使后续的一个R失效)【相…

私人云盘(自动云同步)

一、项目简介 模仿小米的云服务,实现一个通过TCP实现的私人云盘,因为能力有限,所以只实现自动云同步这一个功能,具体可以分为三个小功能,即保持云端和终端数据一致、实现文件的上传与下载以及手动同步 二、涉及到的知…

LayerNorm层归一化

1.背景 与 Batch normalization 不同,Layer normalization 是在特征维度上进行标准化的,而不是在数据批次维度上。像 Batch Norm 它的核心是数据批次之间的归一化【强调的是第 i 批次和第 i1 批次的区别,然后BN去缩小他们的的区别】&#xf…

Jacob环境探索(兼容性、管理员、DLL位置、VS环境,COM权限)

概述: 最近在生产开发实践出现了很多问题,经过了一系列排查,特做如下总结 探索成果: 1. jacob.dll的建议位置 首先jacob的官网,以及官方GitHub,你可以从这里找到DLL文件,以及相关资料然后DLL文…

lxml库在爬虫领域的贡献及应用

重头戏lxml库里面的xpath 一段代码给各位开开胃 这段代码首先导入了lxml库中的etree模块,然后定义了一个包含HTML内容的字符串html。接着,我们使用etree.HTML()函数解析这个HTML字符串,得到一个表示整个HTML文档的树形结构。最后,…

WindTerm使用SSH密钥连接阿里云实例,服务器设置SSH密钥登录

安装Windterm 地址https://github.com/kingToolbox/WindTerm/releases 下载完放到文件夹就可以打开 阿里云开启密钥对 打开阿里云ecs控制台 https://ecs.console.aliyun.com/keyPair/region/cn-wulanchabu 网络与安全->密钥对,创建密钥对,创建成…

STM32项目分享:智能蓝牙手环

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板打样焊接图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: https://www.bilibili.c…

改变Layout布局中路由渲染区域页面跳转变全屏

有一个需求需要点击侧边栏跳转页面时变全屏,而不是还在content中

QWidget 属性——windowTitle·windowIcon·qrc

🐌博主主页:🐌​倔强的大蜗牛🐌​ 📚专栏分类:QT ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、windowTitle二、windowIcon三、qrc 一、windowTitle windowTitle 是一个通常用于表示窗口标题…

企业级开源项目,云缓存解决方案:CacheCloud

CacheCloud:简化缓存管理,释放数据潜力- 精选真开源,释放新价值。 概览 CacheCloud是由搜狐视频团队开发的一款开源的Redis缓存云平台,支持Redis多种架构(Standalone、Sentinel、Cluster)高效管理、有效降低大规模redis运维成本&…

深入理解rtmp(一)之开发环境搭建

深入理解rtmp(一)之开发环境搭建 手机直播在15年的时候突然火起来,随着花椒,映客等出现,直播一下就出现在了风口,各个公司针对直播的战斗迅速打响,战斗过程比较短暂,随着许多公司的退出和死去,手机直播行业趋于稳定,直播服务时长也被传统的CDN厂商牢牢占据,后面大家又把精力投…

c++【入门】火柴棒三角形问题

限制 时间限制 : 1 秒 内存限制 : 128 MB 题目 如下图所示,摆1个火柴棒三角形需要3根火柴,那么摆2个火柴棒三角形就需要6根火柴,请问摆n个火柴棒三角形需要多少根火柴? 输入 一个整数n,代表想要摆放的火柴棒三角形…

[大模型]Llama-3-8B-Instruct FastApi 部署调用

环境准备 在 Autodl 平台中租赁一个 3090 等 24G 显存的显卡机器,如下图所示镜像选择 PyTorch-->2.1.0-->3.10(ubuntu22.04)-->12.1。 接下来打开刚刚租用服务器的 JupyterLab,并且打开其中的终端开始环境配置、模型下载和运行演示。 pip 换源…

【AI大模型】Transformers大模型库(九):大模型微调之计算微调参数占比

目录 一、引言 二、计算微调参数占比 2.1 概述 2.2 模型参数结构一览 2.3 微调参数占比计算 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库,为huggingface上数以万计的预训练大模型提供预测、训练等服务。 🤗 Transform…

【Qt】文件操作

文章目录 1 :peach:Qt 文件概述:peach:2 :peach:输入输出设备类:peach:3 :peach:文件读写类:peach:4 :peach:文件和目录信息类:peach: 1 🍑Qt 文件概述🍑 文件操作是应⽤程序必不可少的部分。Qt 作为⼀个通⽤开发库,提供了跨平台的⽂件操作能…

使用开源的zip.cpp和unzip.cpp实现压缩包的创建与解压(附源码)

目录 1、使用场景 2、压缩包的创建 3、压缩包的解压 4、CloseZipZ和CloseZipU两接口的区别 5、开源zip.cpp和unzip.cpp文件的下载 VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排…

【机器学习300问】112、什么是特征点检测?

特征点检测是计算机视觉中的一种技术,用于识别图像中具有显著局部特征的点。这项技术在多个领域内扮演着核心角色,包括图像识别、三维重建、运动跟踪和图像匹配等。 一、特征点任务的目的 在计算机视觉(CV)中,特征点检…