VSCode扩展可通过package.json的contributes.menus配置在资源管理器、编辑器等区域添加自定义右键菜单,结合extension.ts中registerCommand实现命令逻辑,并利用when条件控制显示时机,实现上下文菜单定制。

VSCode 的上下文菜单(即右键菜单)可以通过扩展开发进行定制,满足特定工作流的需求。你可以在资源管理器、编辑器、终端等多个区域添加自定义命令。实现方式主要依赖于 package.json 中的贡献点(contribution points)和激活事件,配合注册命令与菜单项。
在你的 VSCode 扩展中,package.json 文件中的 contributes.menus 字段用于定义上下文菜单的显示位置和触发命令。
常见菜单位置包括:
示例配置:
"contributes": {
"menus": {
"explorer/context": [
{
"command": "myExtension.renameFile",
"group": "modification"
}
],
"editor/context": [
{
"command": "myExtension.formatSelection",
"when": "editorTextFocus && !editorReadonly"
}
]
},
"commands": [
{
"command": "myExtension.renameFile",
"title": "重命名文件(带确认)"
},
{
"command": "myExtension.formatSelection",
"title": "格式化选中内容"
}
]
}
group 可控制菜单分组排序,如 navigation、clipboard、modification 等;when 表达式可控制菜单项的显示条件。
菜单命令需要在主扩展文件(通常是 extension.ts)中通过 registerCommand 实际实现。
示例代码:
import * as vscode from 'vscode';
<p>export function activate(context: vscode.ExtensionContext) {
const renameFile = vscode.commands.registerCommand('myExtension.renameFile', async (resourceUri) => {
if (resourceUri instanceof vscode.Uri) {
const newPath = await vscode.window.showInputBox({ prompt: '输入新文件名' });
if (newPath) {
const newUri = vscode.Uri.joinPath(resourceUri.parent, newPath);
await vscode.workspace.fs.rename(resourceUri, newUri);
}
}
});</p><p>const formatSelection = vscode.commands.registerCommand('myExtension.formatSelection', async (e) => {
const editor = vscode.window.activeTextEditor;
if (editor && !editor.document.isReadOnly) {
const selection = editor.selection;
const text = editor.document.getText(selection);
// 简单处理:转为大写(实际可用 formatter)
await editor.edit(editBuilder => {
editBuilder.replace(selection, text.toUpperCase());
});
}
});</p><p>context.subscriptions.push(renameFile, formatSelection);
}</p>注意:传递给命令的参数(如 resourceUri)由上下文自动注入,具体类型取决于菜单所在位置。
QCMS企业建站系统是通过MVC架构开发的一套PHP轻量级系统,开源,小巧,易用,功能强大、可以自定义模块,容易二次开发,可以称得上是万能CMS系统,可用于企业站,文章站,图片站,下载站,你只要能想得到,就能做的到。 QCMS V6.0.0 主要功能描述特色说明: 简单易用的模板标签,是我们系统的核心组成部分,系统对SEO更友好,源代码全部开放,毫无保留! 1 内容模块有 ,新
0
VSCode 支持丰富的上下文条件表达式,让菜单项只在合适场景出现。
常用条件包括:
例如,只为 JavaScript 文件显示菜单:
"when": "resourceExtname == '.js'"你可以为命令添加图标,提升可视化体验。支持使用内置图标或自定义 SVG。
示例:
{ "command": "myExtension.backupFile", "title": "备份文件", "icon": "$(backup)" }更多图标参考 官方图标列表。
基本上就这些。通过合理配置菜单位置、命令逻辑和显示条件,你可以深度集成自定义功能到 VSCode 的右键菜单中,提升操作效率。不复杂但容易忽略的是上下文参数的获取和 when 表达式的准确编写。
以上就是VSCode上下文菜单定制开发的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号