code --uninstall-extension 命令可一键卸载已注册插件,需准确使用插件id(如ms-python.python),而非.vsix文件名;若失败,应手动删除~/.vscode/extensions/下对应id文件夹并重启vscode。

用 code --uninstall-extension 命令最直接
离线安装的插件和在线安装的一样,都注册在 VSCode 的扩展系统里,卸载方式完全相同。只要你知道插件的 ID(不是文件名),就能用 CLI 一键卸载。
插件 ID 通常形如 ms-python.python 或 esbenp.prettier-vscode,可在插件详情页 URL 或已安装插件列表的「详细信息」中看到。别误用 .vsix 文件名,比如 prettier-vscode-9.10.0.vsix 就不能当参数传。
- 先确认插件是否已安装:
code --list-extensions | grep prettier - 卸载命令示例:
code --uninstall-extension esbenp.prettier-vscode - 执行后无提示即成功;若提示
Extension 'xxx' is not installed.,说明 ID 错了或已被删过
找不到插件 ID?去 ~/.vscode/extensions/ 目录手动删
VSCode 所有用户级插件都解压存放在这个目录下,文件夹名就是插件 ID(带版本号)。即使插件被禁用、不兼容或安装失败残留,这里也可能有对应文件夹。
Windows 用户路径是 %userprofile%\.vscode\extensions\,macOS / Linux 是 ~/.vscode/extensions/。注意:不要删 ~/.vscode 整个目录,否则会丢掉工作区设置和用户片段。
- 打开终端,进到该目录:
cd ~/.vscode/extensions - 列出内容:
ls -la,找名字含关键词(如python、eslint)的文件夹 - 确认后删除:
rm -rf esbenp.prettier-vscode-9.10.0 - 删完重启 VSCode,插件就彻底消失,不会出现在已安装列表里
卸载后插件仍显示在 UI 中?重启或清除缓存
有时候插件文件删了,但 VSCode 进程还缓存着元数据,导致扩展视图里仍显示灰色“已禁用”条目,点启用报错 Cannot find module。
这不是没卸载干净,而是 UI 层没刷新。强制刷新只需两步:
- 完全退出 VSCode(macOS 注意菜单栏图标也要右键退出,Windows 检查任务管理器有没有残留
Code.exe进程) - 启动时加
--disable-extensions参数临时禁用所有扩展:code --disable-extensions,再正常重启 - 如果仍残留,可删掉
~/.vscode/extensions.json(记录已安装扩展 ID 的缓存文件),VSCode 会在下次启动时重建它
为什么不能直接删 .vsix 文件来卸载?
很多人误以为离线安装的插件 = 那个下载来的 .vsix 文件,其实不是。.vsix 只是安装包,装完就被解压、注册、丢弃——它不参与运行,也不被 VSCode 引用。删它毫无影响,也不会让插件消失。
真正起作用的是解压后的代码目录 + extensions.json 里的注册记录。所以只删 .vsix,插件照常加载;而漏删 extensions.json 里的条目,重启后可能触发重装逻辑(尤其某些插件带自动更新钩子)。
离线环境里最容易忽略的,其实是插件 ID 和本地版本的耦合关系——同一个插件,不同版本 ID 相同,但文件夹名不同;手动删目录时若只删错版本,旧版可能还在后台生效。











