VSCode右键菜单精简需分三类处理:编辑器内右键由editor.contextmenu数组显式配置,插件项用"commandId":"hidden"隐藏,系统级右键须修改注册表并重启explorer.exe。

VSCode右键菜单太长,不是插件太多就该卸载,而是你没分清三类菜单的控制路径——编辑器内、资源管理器里、系统级文件上,改错地方等于白忙。
编辑器内右键(代码区)只留 Copy/Paste 怎么配?
这个菜单由 editor.contextmenu 数组完全控制,空数组会清空全部(包括复制粘贴),想保留就得手动列命令 ID 和条件。
-
when必须含editorTextFocus,漏了菜单根本不会弹;加!editorReadonly才能避免在只读文件里显示格式化项 - 命令 ID 要精确:
editor.action.clipboardCopyAction不是copy,editor.action.formatDocument不是format;查法:Ctrl+Shift+P 输“format”,看右侧完整 ID -
group影响排序,但只认预设值如"9_cutcopypaste"或"1_modification";填"mygroup"会被忽略,项可能消失或乱序 - 示例(只留复制、粘贴、查找):
"editor.contextmenu": [
{"command":"editor.action.clipboardCopyAction","group":"9_cutcopypaste","when":"editorTextFocus && !editorReadonly"},
{"command":"editor.action.clipboardPasteAction","group":"9_cutcopypaste","when":"editorTextFocus && !editorReadonly"},
{"command":"editor.action.addSelectionToNextFindMatch","group":"z_commands","when":"editorTextFocus"}
]
GitLens/ESLint 这类插件右键项怎么关?
不是所有插件都响应 menuVisibility: "hidden" ——只有插件在 package.json 里声明了可配置 visibility,才能在 settings.json 中生效。主流插件如 GitLens、ESLint、Prettier 已支持,小众插件基本无效。
- 先查命令 ID:右键触发一次目标项 → Help → Toggle Developer Tools → 看 Console 输出的
command 'xxx' - 在
settings.json中加对应项,值必须是字符串"hidden";写false、null或0都无效 - 常见有效配置:
"gitlens.compareWithBranch":"hidden", "eslint.showOutputChannel":"hidden", "prettier.showOutputChannel":"hidden"
- 改完必须**完全重启 VSCode**(不只是重载窗口),否则缓存残留会导致菜单未更新
系统级右键(文件/文件夹上)的“Open with Code”怎么删?
这类菜单根本不在 VSCode 进程里运行,而是 Windows 资源管理器读注册表渲染的,VSCode 设置对它完全无效。
- 核心路径有三类:
HKEY_CLASSES_ROOT\*\shell(所有文件)、HKEY_CLASSES_ROOT\Directory\shell(文件夹)、HKEY_CLASSES_ROOT\DirectoryBackground\shell(空白处) - 找到对应项(如名为
VSCode或Open with Code的子项),右键 → 删除 - 删完必须重启资源管理器:打开任务管理器 → 找到
Windows 资源管理器→ 右键 → 重新启动 - 如果只是想禁用而非删除,可把子项下的
DefaultIcon或command值清空,但不如直接删干净
最易被忽略的一点:插件卸载后,其右键项仍可能残留——这不是设置没生效,而是扩展文件夹没彻底删掉。必须手动进 %USERPROFILE%\.vscode\extensions 找到对应文件夹并删除,再完全重启 VSCode。


















