如何通过VSCode扩展在view/title区域添加下拉菜单?
完全可以实现你需要的view/title区域标注为Run extension的下拉菜单效果,具体操作步骤如下:
步骤1:配置package.json扩展贡献点
在你扩展项目的package.json文件中,找到contributes字段,添加命令、子菜单、菜单绑定的相关配置,示例如下:
{ "contributes": { // 1. 声明所有要用到的命令 "commands": [ { "command": "你的扩展ID.runExtension", "title": "Run extension", "icon": "$(play)" // 可选,可配置按钮左侧显示的图标 }, { "command": "你的扩展ID.runExtensionDebug", "title": "Run in debug mode" }, { "command": "你的扩展ID.runExtensionRelease", "title": "Run in release mode" } ], // 2. 声明下拉子菜单 "submenus": [ { "id": "你的扩展ID.runSubmenu", "label": "Run extension" } ], // 3. 绑定菜单显示位置 "menus": { // 把子菜单绑定到目标视图的title区域 "view/title": [ { "submenu": "你的扩展ID.runSubmenu", "when": "view == 你的目标视图ID", // 替换为你要添加菜单的视图ID "group": "navigation" // 放在title区域最左侧的操作组 } ], // 把命令绑定到自定义的子菜单中 "你的扩展ID.runSubmenu": [ { "command": "你的扩展ID.runExtension", "group": "1_main" }, { "command": "你的扩展ID.runExtensionDebug", "group": "2_more" }, { "command": "你的扩展ID.runExtensionRelease", "group": "2_more" } ] } } }
步骤2:注册命令的实际执行逻辑
在扩展的入口文件(通常是extension.ts/extension.js)中,为上面声明的所有命令注册对应的触发逻辑,示例如下:
import * as vscode from 'vscode'; export function activate(context: vscode.ExtensionContext) { // 依次注册所有命令的执行逻辑 context.subscriptions.push( vscode.commands.registerCommand('你的扩展ID.runExtension', () => { // 普通运行模式的逻辑代码 vscode.window.showInformationMessage('开始运行扩展'); }), vscode.commands.registerCommand('你的扩展ID.runExtensionDebug', () => { // 调试运行模式的逻辑代码 vscode.window.showInformationMessage('调试模式运行扩展'); }), vscode.commands.registerCommand('你的扩展ID.runExtensionRelease', () => { // 发布运行模式的逻辑代码 vscode.window.showInformationMessage('发布模式运行扩展'); }) ); }
注意事项
- 把上面配置中的
你的扩展ID替换为你自己扩展的唯一标识,你的目标视图ID替换为你要添加下拉菜单的视图的ID - 子菜单中排在第一个的命令会作为主按钮的默认触发项,点击按钮左侧会直接执行该命令,点击右侧箭头会展开所有子选项
group字段用于控制菜单项的排序,同组的菜单项会放在一起,组名前缀的数字越小,排序越靠前
内容的提问来源于stack exchange,提问作者Sergii Zinkevych
相关产品推荐
相关产品推荐

