VS Code 会通过修改系统注册表(Windows)、“全部更改”设置(macOS)或 MIME 类型关联(Linux)抢占文件类型默认打开权,需分别在系统默认应用设置、Finder简介或xdg-mime中手动重置;同时其后台进程可能持续拦截文件打开请求,须彻底退出并禁用相关选项。

VS Code 在 Windows 上抢注了文件类型关联
这是最常见的情况:双击某个文件(比如 .js、.txt)直接用 VS Code 打开,而你其实想用记事本、Notepad++ 或其他编辑器。VS Code 安装时默认勾选“将 VS Code 添加到 PATH”和“将 VS Code 关联到常用文件类型”,它会静默修改系统注册表里的 HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts 和 HKCR 下的键值。
实操建议:
- 打开 VS Code → 设置(Ctrl+,)→ 搜索 “file associations” → 点击 “Clear All” 清空自定义关联(这仅影响 VS Code 内部行为,不改系统级默认)
- 真正要改系统默认,得进 Windows 设置 → 应用 → 默认应用 → 按文件类型指定默认应用,找到
.js、.py等后缀,逐个点开,选回你想要的程序 - 如果列表里没有目标程序,先用该程序打开一个对应文件(比如用 Notepad++ 打开
test.py),勾选“始终使用此应用打开 .py 文件”,它就会出现在默认应用列表里
macOS 上 VS Code 把自己设为所有文本文件的默认打开方式
VS Code 的 macOS 安装包(.zip 或 .dmg)不会自动注册全局默认,但如果你运行过 code --install-extension 或手动拖拽过 app 到 Applications,再通过 Finder 右键 → “显示简介” → “打开方式” 里选了 VS Code 并点了“全部更改”,那它就生效了。
实操建议:
- 在 Finder 中右键任一目标文件(如
README.md)→ “显示简介” → 展开“打开方式” → 在下拉菜单中选择你真正想用的 App(比如 TextEdit)→ 点击“更改所有…” - 若想批量重置,终端执行:
defaults write com.apple.LaunchServices LSHandlers -array-add '{LSHandlerContentType=public.plain-text;LSHandlerRoleAll=com.apple.TextEdit;}',然后重启 Finder(killall Finder) - 注意:macOS 13+ 对第三方 App 的默认设置更严格,部分类型(如
public.source-code)可能无法被普通 App 声明支持,这时 VS Code 仍可能“赢”——得靠终端命令强制覆盖
Linux(尤其是 GNOME)里 VS Code 覆盖了 text/plain MIME 类型
Linux 桌面环境靠 MIME 类型决定默认打开方式,VS Code 安装时会往 /usr/share/applications/ 或 ~/.local/share/applications/ 写 code.desktop,并声明它支持 text/plain、inode/directory 等通用类型。GNOME 的 xdg-mime 机制会优先匹配最宽泛的类型,于是所有没明确绑定的文本文件都落到 VS Code 头上。
实操建议:
- 查当前默认:
xdg-mime query default text/plain - 改回 gedit:
xdg-mime default gedit.desktop text/plain - 若想让不同后缀走不同程序,分别设置:
xdg-mime default mousepad.desktop text/x-shellscript(对应.sh) - 别直接删
code.desktop文件——下次 VS Code 自动更新会重建;而是用xdg-mime显式覆盖,更稳定
VS Code 启动时自动接管当前目录的终端行为
这不是“打开方式”问题,但用户常混淆:你在终端里输入 code . 后,VS Code 启动并聚焦,接着你关掉窗口,再双击文件资源管理器里的文件,结果还是跳回 VS Code ——因为 VS Code 在后台进程(Code Helper (Renderer))仍驻留,且监听了系统级的文件打开事件(尤其 Windows/macOS)。
实操建议:
- 彻底退出 VS Code:Windows/macOS 按
Cmd/Ctrl+Q,别只关窗口;Linux 检查ps aux | grep code,杀掉残留进程 - 禁用“继续运行后台进程”:VS Code 设置里搜
remote.restoreWorkspaces和window.closeWhenEmpty,关掉相关选项 - 关键点:即使你清空了系统默认打开方式,只要 VS Code 进程活着,它就可能拦截本应发给系统默认程序的打开请求——这点容易被忽略










