VSCode自定义快捷键和添加自定义快捷键按键到状态栏

VSCode自定义快捷键和添加自定义快捷键按键到状态栏


📄在VSCode中想实现快捷键方式执行某些指令操作,可以通过配置组合式的键盘按键映射来实现,另外一种方式就是将执行某些特定的指令嵌入在面板菜单上,在想要执行的时候,鼠标点击对应按键图标即可实现操作。

📘VSCode自定义快捷键方法

  • 打开命令面板(快捷键 Ctrl+Shift+P)。

  • 搜索并选择“Preferences: Open Keyboard Shortcuts (JSON)”。
    在这里插入图片描述

  • keybindings.json 文件中添加自定义快捷键,例如:我这里配置的是Raspberry Pi Pico插件中的SWD下载程序用的快捷键

// 将键绑定放在此文件中以覆盖默认值
[{"key": "ctrl+shift+enter","command": "raspberry-pi-pico.flashProject","when": "raspberry-pi-pico.isPicoProject"
}
]
  • 对应的命令:
    在这里插入图片描述

当程序编译好后,可以直接使用快捷键进行程序烧录操作。

  1. “key”: “ctrl+shift+enter”
    含义:这部分定义了触发对应命令的快捷键组合。在 Windows 和 Linux 系统中,当用户同时按下 Ctrl、Shift 和 Enter 这三个键时,VS Code 会尝试执行与之绑定的命令。在 macOS 系统中,Ctrl 会对应为 Command 键(前提是未对 VS Code 的按键映射进行特殊修改)。
    用途:为用户提供了一种快速触发特定操作的方式,避免了通过菜单或命令面板来执行命令,提高了操作效率。
  2. “command”: “raspberry - pi - pico.flashProject”
    含义:指定了按下上述快捷键组合时要执行的具体命令。raspberry - pi - pico.flashProject 是一个特定的命令标识符,通常由扩展(这里是 Raspberry Pi Pico 扩展)定义。这个命令可能用于将项目代码烧录到 Raspberry Pi Pico 开发板上。
    用途:将快捷键与特定的功能操作关联起来,当用户按下指定快捷键时,VS Code 会查找并执行该命令对应的逻辑。
  3. “when”: “raspberry - pi - pico.isPicoProject”
    含义:这是一个条件表达式,用于指定在何种情况下该快捷键绑定才会生效。raspberry - pi - pico.isPicoProject 是一个由 Raspberry Pi Pico 扩展定义的上下文条件,只有当当前项目被识别为 Raspberry Pi Pico 项目时,按下 Ctrl + Shift + Enter 组合键才会触发 raspberry - pi - pico.flashProject 命令。
    用途:通过设置条件,可以避免在不相关的场景下误触发快捷键,提高快捷键使用的准确性和针对性。例如,如果当前打开的不是 Raspberry Pi Pico 项目,按下这个快捷键组合将不会执行烧录操作。
  • 需要执行的command可以在对应安装的插件目录里对应的package.json文件中找到所有命令的名称定义。这里以我的电脑安装的raspberry-pi-pico插件为例:
  • 插件安装位置:(以最新插件版本位置为准)
C:\Users\Administrator\.vscode\extensions\raspberry-pi.raspberry-pi-pico-0.17.4\package.json

在这里插入图片描述

  • 在成员对象(contributes)中,找到成员对应的命令(commands):
"contributes": {"commands": [{"command": "raspberry-pi-pico.newProject","title": "New Pico Project","category": "Raspberry Pi Pico"},{"command": "raspberry-pi-pico.switchSDK","title": "Switch Pico SDK","category": "Raspberry Pi Pico","enablement": "raspberry-pi-pico.isPicoProject"},{"command": "raspberry-pi-pico.switchBoard","title": "Switch Board","category": "Raspberry Pi Pico","enablement": "raspberry-pi-pico.isPicoProject"},{"command": "raspberry-pi-pico.launchTargetPath","title": "Get path of the project executable","category": "Raspberry Pi Pico","enablement": "false"},{"command": "raspberry-pi-pico.getPythonPath","title": "Get python path","category": "Raspberry Pi Pico","enablement": "false"},{"command": "raspberry-pi-pico.getEnvPath","title": "Get environment path","category": "Raspberry Pi Pico","enablement": "false"},{"command": "raspberry-pi-pico.getGDBPath","title": "Get GDB path","category": "Raspberry Pi Pico","enablement": "false"},{"command": "raspberry-pi-pico.getCompilerPath","title": "Get compiler path","category": "Raspberry Pi Pico","enablement": "false"},{"command": "raspberry-pi-pico.getCxxCompilerPath","title": "Get C++ compiler path","category": "Raspberry Pi Pico","enablement": "false"},{"command": "raspberry-pi-pico.getChip","title": "Get Chip","category": "Raspberry Pi Pico","enablement": "false"},{"command": "raspberry-pi-pico.getChipUppercase","title": "Get Chip Uppercase","category": "Raspberry Pi Pico","enablement": "false"},{"command": "raspberry-pi-pico.getTarget","title": "Get OpenOCD Target","category": "Raspberry Pi Pico","enablement": "false"},{"command": "raspberry-pi-pico.getPicotoolPath","title": "Get Picotool path","category": "Raspberry Pi Pico","enablement": "false"},{"command": "raspberry-pi-pico.compileProject","title": "Compile Pico Project","category": "Raspberry Pi Pico","enablement": "raspberry-pi-pico.isPicoProject"},{"command": "raspberry-pi-pico.runProject","title": "Run Pico Project (USB)","category": "Raspberry Pi Pico","enablement": "raspberry-pi-pico.isPicoProject"},{"command": "raspberry-pi-pico.clearGithubApiCache","title": "Clear GitHub API cache","category": "Raspberry Pi Pico"},{"command": "raspberry-pi-pico.conditionalDebugging","title": "Conditional Debugging","category": "Raspberry Pi Pico","enablement": "raspberry-pi-pico.isPicoProject && !inQuickOpen"},{"command": "raspberry-pi-pico.debugLayout","title": "Debug Layout","category": "Raspberry Pi Pico","enablement": "raspberry-pi-pico.isPicoProject"},{"command": "raspberry-pi-pico.openSdkDocumentation","title": "Open SDK Documentation","category": "Raspberry Pi Pico"},{"command": "raspberry-pi-pico.configureCmake","title": "Configure CMake","category": "Raspberry Pi Pico","enablement": "raspberry-pi-pico.isPicoProject"},{"command": "raspberry-pi-pico.switchBuildType","title": "Switch Build Type","category": "Raspberry Pi Pico","enablement": "raspberry-pi-pico.isPicoProject"},{"command": "raspberry-pi-pico.importProject","title": "Import Pico Project","category": "Raspberry Pi Pico"},{"command": "raspberry-pi-pico.newExampleProject","title": "New Example Pico Project","category": "Raspberry Pi Pico"},{"command": "raspberry-pi-pico.uninstallPicoSDK","title": "Uninstall Pico SDK","category": "Raspberry Pi Pico"},{"command": "raspberry-pi-pico.flashProject","title": "Flash Pico Project (SWD)","category": "Raspberry Pi Pico","enablement": "raspberry-pi-pico.isPicoProject"},{"command": "raspberry-pi-pico.cleanCmake","title": "Clean CMake","category": "Raspberry Pi Pico","enablement": "raspberry-pi-pico.isPicoProject && !raspberry-pi-pico.isRustProject"}],

在以上包含的成员-命令都可以设置对应的快捷键。

📗添加自定义快捷键按键到状态栏

有时候插件安装好后,在状态栏上没有我们所需要的快捷键按键图标,但是插件里面是带有有此快捷命令的,就可以自己添加。

添加方法

这里我还是以上面的raspberry-pi-pico插件中的SWD烧录快捷键命令图标,进行添加。

  • 找到插件安装目录,配置状态栏上内嵌的快捷键插件图标定义是在extension.cjs文件中。
C:\Users\Administrator\.vscode\extensions\raspberry-pi.raspberry-pi-pico-0.17.4\dist\extension.cjs
  • 搜索关键字StatusBarItemKey,定位到VSCode状态栏内嵌快捷键按键定义的地方。
var StatusBarItemKey;
(function (StatusBarItemKey) {StatusBarItemKey["compile"] = "raspberry-pi-pico.compileProject";StatusBarItemKey["run"] = "raspberry-pi-pico.runProject";StatusBarItemKey["swd"] = "raspberry-pi-pico.flashProject";/*添加自己想要的快捷键按键到VSCode状态栏上的指令*/StatusBarItemKey["picoSDKQuickPick"] = "raspberry-pi-pico.sdk-quick-pick";StatusBarItemKey["picoBoardQuickPick"] = "raspberry-pi-pico.board-quick-pick";
})(StatusBarItemKey || (StatusBarItemKey = {}));
const STATUS_BAR_ITEMS = {[StatusBarItemKey.compile]: {// alt. "$(gear) Compile"text: "$(file-binary) Compile",command: "raspberry-pi-pico.compileProject",tooltip: "Compile Project",},[StatusBarItemKey.run]: {// alt. "$(gear) Compile"text: "$(run) Run",command: "raspberry-pi-pico.runProject",tooltip: "Run Project",},/*添加自己想要的快捷键按键到VSCode状态栏上的指令*/[StatusBarItemKey.SWD]: {// alt. "$(gear) Compile"text: "$(swd) SWD"command: "raspberry-pi-pico.flashProject",tooltip: "SWD Project",},[StatusBarItemKey.picoSDKQuickPick]: {text: "Pico SDK: <version>",command: "raspberry-pi-pico.switchSDK",tooltip: "Select Pico SDK",},[StatusBarItemKey.picoBoardQuickPick]: {text: "Board: <board>",command: "raspberry-pi-pico.switchBoard",tooltip: "Select Board",},
};
  1. 定义枚举类型 StatusBarItemKey
    var StatusBarItemKey;:声明一个变量 StatusBarItemKey,用于后续存储枚举对象。
    (function (StatusBarItemKey) {… })(StatusBarItemKey || (StatusBarItemKey = {}));:这是一个立即执行函数表达式(IIFE)。它的作用是创建一个局部作用域,避免变量污染全局作用域。
    StatusBarItemKey || (StatusBarItemKey = {}):如果 StatusBarItemKey 已经存在,则使用它;否则,将其初始化为一个空对象。
    在函数内部,为 StatusBarItemKey 对象添加了多个属性,这些属性作为枚举成员,每个成员都有一个对应的字符串值,这些值通常是 VSCode 命令的标识符。
  2. 定义状态栏项目对象 STATUS_BAR_ITEMS
    const STATUS_BAR_ITEMS = {... };:定义一个常量对象 STATUS_BAR_ITEMS,用于存储状态栏项目的详细信息。
    [StatusBarItemKey.compile]、[StatusBarItemKey.run] 等:使用计算属性名,将 StatusBarItemKey 枚举中的成员作为对象的属性名。
    每个属性对应一个对象,包含以下三个属性:
    text:状态栏项目显示的文本内容,$(...) 是 VSCode 的图标语法,用于在文本中显示图标。
    command:点击状态栏项目时要执行的 VSCode 命令的标识符。
    tooltip:鼠标悬停在状态栏项目上时显示的工具提示信息。
    总结
  • 其他插件的状态栏快捷键按键添加方法,应该也和这个类似,找到对应的StatusBarItemKey地方,按照现有的指令快捷键按键,依葫芦画瓢的方式补充添加即可。
  • 添加成功后,重启VSCode,打开对应的工程时,所添加的图标会显示在状态栏上:
    在这里插入图片描述

🛠自定义修改系统栏插件命令图标和内容

  • 🌿修改的属性内容:
 [StatusBarItemKey.SWD]: {// alt. "$(gear) Compile"text: "$(swd) SWD",command: "raspberry-pi-pico.flashProject",tooltip: "CMSIS-DAP Project",},
  • 🔬对应的状态栏图标显示内容效果:(tooltip属性值,影响鼠标移动到对应图标上所显示的内容提示信息)
    在这里插入图片描述
  • 🌿修改显示名称: text: "$(file-binary) Compile",修改为成: text: "$(file-binary) Build",
    [StatusBarItemKey.compile]: {// alt. "$(gear) Compile"text: "$(file-binary) Build",command: "raspberry-pi-pico.compileProject",tooltip: "Compile Project",},
  • 显示效果:(原来的Compile字符显示换成Build
    在这里插入图片描述
  • 🌟增加图标显示效果:(带图标显示效果的状态栏快捷键按键图标)
  [StatusBarItemKey.SWD]: {// alt. "$(gear) Compile"text: "$(debug-step-into) SWD",command: "raspberry-pi-pico.flashProject",tooltip: "CMSIS-DAP Project",},
  • 显示修改:(debug-step-into代表在SWD前面所显示的图标符号)
    在这里插入图片描述

📒显示或隐藏对应的插件快捷键图标方法:

在状态栏上右键,找到对应的插件扩展,前面打钩的选项就是显示出来的,没有打钩的就不会显示在状态栏上。可以很方便的管理状态栏上的显示快捷键,将一些不常用无关紧要的快捷功能按键图标隐藏掉,简洁VSCode状态栏显示界面。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 🎉显示图标其相关图标代码和对应图标的显示效果可以参考下面的网址:
https://code.visualstudio.com/api/references/icons-in-labels

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

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

相关文章

【C语言】指针(5)

前言&#xff1a;上篇文章的末尾我们使用了转移表来解决代码冗余的问题&#xff0c;那我们还有没有什么办法解决代码冗余呢&#xff1f;有的这就是接下来要说的回调函数。 往期文章: 指针1 指针2 指针3 指针4 文章目录 一&#xff0c;回调函数二&#xff0c;qsort实现快速排序1…

【python】网页批量转PDF

安装wkhtmltopdf 网站&#xff1a;wkhtmltopdf wkhtmltopdf http://www.baidu.com/ D:website1.pdf 安装pdfkit库 pip install pdfkit 批量转换代码 import os import pdfkit path_wkthmltopdf rE:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe config pdfkit.configu…

游戏引擎学习第113天

仓库:https://gitee.com/mrxiao_com/2d_game_2 黑板&#xff1a;优化的基本过程 在游戏编程中&#xff0c;优化是一个非常重要的学习内容&#xff0c;尤其是想要成为专业开发者时。优化的核心是理解代码的执行速度&#xff0c;以及如何提升其性能。在这个阶段&#xff0c;已经…

通义灵码AI程序员

通义灵码是阿里云与通义实验室联合打造的智能编码辅助工具&#xff0c;基于通义大模型技术&#xff0c;为开发者提供多种编程辅助功能。它支持多种编程语言&#xff0c;包括 Java、Python、Go、TypeScript、JavaScript、C/C、PHP、C#、Ruby 等 200 多种编码语言。 通义灵码 AI…

SeaTunnel社区「Demo方舟计划」首期活动上线—— MySQL CDC实时同步至PostgreSQL实战

引言 凌晨2点&#xff0c;某电商公司的数据工程师小李正对着屏幕抓狂——业务部门临时要求将MySQL的订单表实时同步到PostgreSQL进行分析&#xff0c;众所周知&#xff0c;在数据驱动的业务场景中&#xff0c;异构数据源同步是高频刚需。 以MySQL到PostgreSQL的CDC同步为例&a…

iNeuOS工业互联网操作系统,民爆远程运维平台案例

iNeuOS工业互联网操作系统,民爆远程运维平台案例 目 录 1. 概述... 2 2. iNeuOS在民爆生产厂区和北京运维中心配置... 3 1.1 生产厂区配置... 3 1.2 运维中心配置... 7 1. 概述 针对本项目进行初步调研,项目的总体需求为满足新建…

利用websocket检测网络连接稳定性

浏览器中打开F12&#xff0c;控制台中输入以下内容 > 回车 > 等待结果 连接关闭 表示断网 let reconnectDelay 1000; // 初始重连间隔 let pingInterval null; let socketManuallyClosed false; // 标志是否手动关闭function createWebSocket() {if (socketManuallyCl…

Unity shader glsl着色器特效之 模拟海面海浪效果

一个简单的海浪效果&#xff0c;通过波的叠加实现水面起伏的动效&#xff0c;根据波峰斜率来为浪花着色&#xff0c;再根据法线贴图和水花贴图来和调整uv的平滑移动来增强海浪移动的细节。如果需要更逼真的效果可以考虑在满足浪花触发的地方添加粒子系统 前置效果图 因为是很久…

智能经济与个人智能助理有什么发展

智能经济与个人智能助理有什么发展 技术融合创新 研究个人助理与新兴技术&#xff08;如量子计算、边缘计算&#xff09;融合&#xff0c;分析对智能经济的推动作用。探索量子计算提升数据处理速度&#xff0c;边缘计算降低延迟&#xff0c;提升个人助理性能的机制&#xff0…

spring日志

前言 入门 这些就是日志 现在开始使用一下 spring是集合了日志的 注意选这个 这样我们就创建好了一个日志对象了 我们就可以这样打印日志了 日志和普通的打印消息相比&#xff0c;区别就是多个一些时间之类的消息 从左到右分别是时间&#xff0c;级别&#xff0c;PID&#x…

整合Salesmart/WhatsApp、开源Odoo模块和Deepseek AI能力,实现针对国外客户的智能客服和个性化推荐服务

一、项目背景 本文提出了一套针对软管制造公司的智能客服与个性化推荐系统实施方案&#xff0c;旨在通过整合开源Odoo模块、Salesmart/WhatsApp以及Deepseek AI能力&#xff0c;打造一个724小时不间断服务的智能化平台&#xff0c;专注于服务国外客户。方案围绕实现不间断服务…

Java中JDK、JRE,JVM之间的关系

Java中的JDK、JRE和JVM是三个核心概念&#xff0c;其关系可概括为JDK > JRE > JVM&#xff0c;具体如下&#xff1a; 一、定义与作用 JDK&#xff08;Java Development Kit&#xff09; 定义&#xff1a;Java开发工具包&#xff0c;用于开发和编译Java程序。包含内容&…

用C++ Qt实现安卓电池充电动效 | 打造工业级电量控件

一、为什么需要自定义电池控件&#xff1f; 在工业控制、车机系统、智能硬件等领域的UI开发中&#xff0c;电池状态显示是高频出现的UI组件。通过实现一个支持颜色渐变、动态充电动画、警戒阈值提示的电池控件&#xff0c;开发者可以系统掌握以下核心能力&#xff1a; Qt绘图…

Django+Vue3全栈开发实战:从零搭建博客系统

文章目录 1. 开发环境准备2. 创建Django项目与配置3. 设计数据模型与API4. 使用DRF创建RESTful API5. 创建Vue3项目与配置6. 前端页面开发与组件设计7. 前后端交互与Axios集成8. 项目优化与调试9. 部署上线10. 总结与扩展10.1 项目总结10.1.1 技术栈回顾10.1.2 项目亮点 10.2 扩…

Django 5实用指南(五)模板系统

Django5的模板系统是其核心功能之一&#xff0c;允许开发者将动态数据嵌入到HTML模板中&#xff0c;并根据不同的业务需求渲染页面。Django模板系统基于 Django模板语言&#xff08;DTL&#xff09;&#xff0c;它提供了一些强大的功能&#xff0c;如模板标签、过滤器、条件语句…

uni-app开发app时 使用uni.chooseLocation遇到的问题

问题一&#xff1a;不显示 问题二&#xff1a;选择地址列表一直在加载中 因为 uni-app 接口文档 中已经说明&#xff0c;使用腾讯的话需要开启云服务&#xff0c;具体可看官网&#xff0c;这就是为什么使用时直接不显示的原因&#xff0c;所以我使用的高德&#xff0c;但又出现…

推荐系统-排序模型

本次学习的重点是FM系列和WideNDeep系列。其实这两个模型是存在因果关系的。从最初的LR模型开始&#xff0c;因为缺失高效的特征交互方式&#xff0c;产生了FM模型&#xff0c;即通过向量内积代替特征之间的两两交互的参数。最后DNN的引入可以建模更高阶的特征。但是DNN如何与F…

体验用ai做了个python小游戏

体验用ai做了个python小游戏 写在前面使用的工具2.增加功能1.要求增加视频作为背景。2.我让增加了一个欢迎页面。3.我发现中文显示有问题。4.我提出了背景修改意见&#xff0c;欢迎页面和结束页面背景是视频&#xff0c;游戏页面背景是静态图片。5.提出增加更多游戏元素。 总结…

c#爬取数据并解析json

安装 Newtonsoft.Json Install-Package Newtonsoft.Json代码 HttpClient client new HttpClient();// 获取网页内容HttpResponseMessage response client.GetAsync("https://opentdb.com/api.php?amount10&category18&difficultyeasy&typemultiple"…

计算机毕业设计Python农产品推荐系统 农产品爬虫 农产品可视化 农产品大数据(源码+LW文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…