VSCode右键菜单精简需分三类处理:编辑器内右键由editor.contextmenu数组显式配置,必须手动列出命令ID、when条件(含editorTextFocus)和预设group;插件项如GitLens、ESLint等可用"commandId":"hidden"隐藏;系统级右键须修改注册表对应路径并重启explorer.exe。

VSCode右键菜单臃肿,不是设置没生效,而是你根本没在对的地方改——编辑器内右键、资源管理器右键、系统级文件/文件夹右键,三者互不干扰,各自有独立的控制路径。
编辑器区域右键菜单怎么只留几个核心项?
编辑器里代码区右键弹出的菜单(即光标在代码中时),由 editor.contextmenu 数组完全控制。它不是“开关”,而是显式白名单:空数组会清空全部(包括复制粘贴),想保留就得手动列出来。
-
when必须含editorTextFocus,否则菜单根本不触发;漏写!editorReadonly可能在只读文件里意外显示格式化项 -
group影响排序,但只认预设值如"1_modification"、"9_cutcopypaste";填"mygroup"会被忽略,菜单项可能乱序或消失 - 命令 ID 必须精确,比如格式化是
editor.action.formatDocument,不是format或formatDocument;查法:Ctrl+Shift+P 输入功能名,看右侧完整 ID
示例(只留复制、粘贴、查找):
"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 这些插件的右键项怎么关掉?
主流插件(GitLens、ESLint、Prettier)从 VSCode 1.84 起支持 menuVisibility 隐藏机制,比禁用整个插件更精准。但小众或老插件不响应这个配置,强行加也无效。
- 命令 ID 必须去插件文档查,或触发一次右键 → 打开开发者工具(Help → Toggle Developer Tools)→ 看 Console 输出的
command 'xxx' - 值必须是字符串
"hidden",写成false、null、0全部无效 - 常见有效配置:
"gitlens.compareWithBranch":"hidden", "eslint.showOutputChannel":"hidden", "prettier.clearOutput":"hidden"
“在 VS Code 中打开文件夹”这类系统级右键项怎么删?
这类选项根本不在 VSCode 进程里,是 Windows 资源管理器读注册表渲染的,VSCode 设置对它完全无效。删错路径会导致选项残留或失效,且必须重启 explorer.exe 才生效。
- 关键注册表路径有两个:
HKEY_CLASSES_ROOT\Directory\shell\vscode(点文件夹图标右键)HKEY_CLASSES_ROOT\Directory\Background\shell\vscode(点文件夹空白处右键) - 删除方式不是手动删键,而是新建 .reg 文件,内容为:
[-HKEY_CLASSES_ROOT\Directory\shell\vscode][-HKEY_CLASSES_ROOT\Directory\Background\shell\vscode] - 双击运行后,必须在任务管理器中结束
explorer.exe进程,再「文件」→「运行新任务」输入explorer.exe重启,否则菜单不变
卸载插件后右键还有空项或报错怎么办?
这是 VSCode 缓存了旧的菜单注册信息,不是 bug,但会持续存在直到彻底清理。Developer: Reload Window 不起作用,必须杀进程。
- 先确认插件已从「已安装」列表中移除,并手动删掉磁盘上对应文件夹:
Windows:%USERPROFILE%\.vscode\extensions\
macOS/Linux:~/.vscode/extensions/ - 在任务管理器中结束所有
Code.exe进程(包括后台服务),再重开 VSCode - 仍有异常?打开开发者工具,右键触发一次,看 Console 是否输出
command 'xxx' not found—— 这说明某处代码还在调用已不存在的命令,得查扩展或自定义脚本
最易被忽略的是:改完 settings.json 后不完全重启 VSCode,或删注册表后不重启 explorer.exe,这两步跳过,前面所有操作都等于白做。


















