editor.contextmenu 数组是 vscode 编辑器内右键菜单唯一生效路径,需显式声明白名单命令(如 clipboardcopyaction、formatdocument),when 条件必须含 editortextfocus,group 须用预设值,插件菜单不响应 menuvisibility,系统级右键需修改注册表。

editor.contextmenu 数组是唯一生效路径
VSCode 编辑器内(即光标落在代码行中时)的右键菜单,不支持图形界面拖拽修改,editor.contextmenu 是唯一控制入口。它不是布尔开关,而是显式白名单:空数组会清空全部项(包括复制、粘贴),想留什么就得手动写进去。
常见错误是只加一两个项却忘了补全基础操作,结果右键点开一片空白。必须确保至少包含 editor.action.clipboardCopyAction 和 editor.action.clipboardPasteAction 这类核心命令,否则连基本编辑都卡住。
-
command必须用完整 ID,比如格式化是editor.action.formatDocument,不是format或formatDocument -
when条件里必须含editorTextFocus,否则菜单压根不弹;加&& !editorReadonly可避免在只读文件里显示不可用操作 -
group决定排序,但只认预设值,如"1_modification"、"9_cutcopypaste";填错(如"mygroup")会导致项消失或乱序
插件注入的右键项不能靠 menuVisibility 隐藏
GitLens、ESLint、Prettier 等插件添加的右键项,绝大多数不响应 menuVisibility: "hidden" —— 这个字段只对部分 VSCode 官方内置命令有效,且必须由插件自己在 package.json 中声明,用户 settings.json 里写无效。
更现实的做法是查插件文档找专属开关,例如:
- GitLens:设
gitlens.views.repositories.menu为false - Prettier:关闭设置页中 “Show Prettier in Context Menu” toggle
- ESLint:搜索 “context menu” 并关闭对应选项
临时方案:右键时按住 Alt(Windows/Linux)或 Option(macOS),VSCode 会自动折叠扩展项,只留核心命令。
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
系统级右键菜单(资源管理器/桌面)需改注册表
你在资源管理器里右键一个 .js 文件、或在桌面空白处右键看到的菜单,和编辑器内右键完全无关。这部分由 Windows 注册表控制,VSCode 的 settings.json 对其无效。
操作路径是 HKEY_CLASSES_ROOT\*\shell 或 HKEY_CLASSES_ROOT\Directory\shell 下的子项。要删掉 Prettier、ESLint 等扩展注册的条目,然后重启资源管理器(任务管理器 → 重启 explorer.exe)。
- 别乱删不明键值,尤其带
vscode字样的不一定全是 VSCode 相关,有些是其他工具注册的 - 注册表修改前建议导出备份
- VSCode 1.86+ 新增的
workbench.contextMenu.experimental.enabled对系统级右键无影响
容易被忽略的兼容性细节
VSCode 1.86+ 引入了 workbench.contextMenu.experimental.enabled,但它对 when 表达式的支持有限,不同版本对扩展命令上下文键的识别也不一致。很多插件根本没暴露可用的 when 键,导致你写了条件也无效。
另一个易漏点是:editor.contextmenu 只作用于编辑器区域,对侧边栏、终端、调试控制台等区域的右键菜单完全无效——那些得靠各自对应的 menu ID(如 explorer/context、terminal/context)单独配置,且通常需要开发扩展才能改。










