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.pswp.cn/diannao/70467.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70467.shtml
英文地址,請注明出處:http://en.pswp.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領…