VSCode右键菜单由插件通过contributes.menuItems注册,禁用插件或配置menuVisibility可隐藏条目;卸载后残留需彻底删除扩展文件并完全重启;新增菜单项须开发插件,纯配置仅支持隐藏。

右键菜单选项来自哪些插件
VSCode 的右键菜单不是统一管理的,而是由各个插件通过 contributes.menuItems 主动注册的。你看到的“在终端中打开”“使用 Git 保存”“复制路径”之类,基本都对应某个已启用插件的贡献点。禁用或卸载插件是最直接的清理方式,但有些插件核心功能有用,只是菜单项冗余——这时候就得手动干预。
- 打开命令面板(
Ctrl+Shift+P/Cmd+Shift+P),输入Developer: Show Running Extensions,可快速查看哪些插件正在注入菜单项 - 重点关注名称含
context menu、explorer context、file menu的插件,比如GitLens、Path Intellisense、Project Manager - 插件未禁用时,其菜单项可能仍存在(尤其重启前),务必重启 VSCode 确认效果
用 settings.json 禁用特定菜单项
VSCode 1.84+ 支持通过 menuVisibility 配置项隐藏部分内置或插件提供的右键菜单条目,前提是该插件在 package.json 中声明了可配置的 visibility 属性。不是所有插件都支持,但主流插件(如 GitLens、ESLint)已陆续适配。
- 打开设置(
Ctrl+,),切换到「Settings (JSON)」标签页 - 添加类似这样的片段:
"editor/contextmenu": false,
可关闭编辑器区域右键菜单(保留资源管理器等其他区域) - 对插件菜单项,需查其文档确认 ID,例如 GitLens 的“Compare with Branch”对应
gitlens.compareWithBranch,则写:"gitlens.compareWithBranch": "hidden"
- 值必须是字符串
"hidden",写成false或null无效
移除插件后菜单残留怎么办
有时卸载插件后,右键菜单里仍有空条目或报错项(比如点击后提示 command 'xxx.action' not found)。这是 VSCode 缓存了旧的菜单注册信息,不是 bug,但影响体验。
- 先确认插件已从「已安装」列表中彻底删除(不只是禁用),并在磁盘上检查插件目录:
~/.vscode/extensions/(macOS/Linux)或%USERPROFILE%\.vscode\extensions\(Windows),手动删掉残留文件夹 - 执行
Developer: Reload Window不够,必须完全退出 VSCode 进程(任务管理器里杀掉所有Code进程),再重开 - 如果仍有异常项,打开开发者工具(
Help → Toggle Developer Tools),在 Console 里右键触发一次,看是否输出类似command 'xxx' not found的错误——这说明某处代码仍在尝试调用已不存在的命令
自定义新增右键菜单项要谨慎
自己写插件或用 vscode-context-menu 类扩展加菜单项很简单,但实际项目中极少需要。多数人想“自定义”其实是想精简,而非增加。
- 新增菜单项必须通过插件实现,无法仅靠 JSON 配置;纯配置只能 hide / show 已有项
- 哪怕只加一个
Run Script项,也要处理命令注册、执行逻辑、错误反馈,维护成本远高于收益 - 如果只是想快速执行某脚本,用
tasks.json+ 快捷键更稳定,也避免污染右键菜单 - 多个插件注册同名 command ID 会导致菜单项重复或覆盖,调试困难
真正难的不是“怎么加”,而是判断哪个菜单项背后绑定了什么插件、有没有副作用。比如关掉 explorer/context 可能顺带干掉文件重命名功能;把 gitlens.* 全设为 hidden 后,某些内联 diff 按钮也会失效。动手前最好先搜一下插件文档里的 menu IDs,别只看表面文字。


















