Remote-SSH中files.exclude必须配置在远程端,本地设置无效;需通过“Open Remote Settings (JSON)”修改远程~/.vscode-server/data/Machine/settings.json,并关闭再重开文件夹生效,同时注意工作区设置可能覆盖远程用户设置。

Remote-SSH 连接后 files.exclude 不生效?改的是本地设置
VSCode 的 Remote-SSH 模式下,files.exclude 必须配置在远程端,本地改毫无作用。你打开命令面板(Ctrl+Shift+P 或 Cmd+Shift+P),运行 Preferences: Open Remote Settings (JSON) —— 这个操作会编辑远程主机上的 ~/.vscode-server/data/Machine/settings.json,不是你本地的 settings.json。
常见错误是:在本地窗口里点开设置、搜 files.exclude、删掉 "**/.*": true,保存后发现 .env 还是不显示。原因就是配置没落到远程。
- 确认当前窗口底部状态栏显示
SSH: xxx,才表示已进入远程上下文 - 必须用
Open Remote Settings (JSON),不是Open Workspace Settings (JSON)(后者只对当前远程工作区有效,但若没开文件夹则不触发) - 改完保存后,仍需执行
File > Close Folder→File > Open Folder重载文件夹,仅刷新或重启 VSCode 不行
想让 .env 显示但继续隐藏 .git 和 .DS_Store?别删整行,精细化覆盖
直接删掉 "**/.*": true 会导致所有点文件(包括 .git、.vscode、.DS_Store)都暴露出来,多数人并不需要这样。更稳妥的做法是保留过滤逻辑,只放行明确需要的:
在远程 settings.json 中,把 files.exclude 改成:
"files.exclude": {
"**/.DS_Store": true,
"**/.git/**": true,
"**/.*": false
}
注意顺序无关,VSCode 按 glob 精确匹配;"**/.*": false 是显式放行所有其他点文件(如 .env、.htaccess),而前两行是针对性屏蔽。
-
"**/.git/**": true比"**/.git": true更准确,能覆盖子模块等嵌套结构 - 不要写
"**/.env": false—— 单独设为false无效,files.exclude只认true表示“排除”,false或缺失表示“不排除” - 如果项目里有
.idea或.project这类非标准点文件,也建议显式加"**/.idea": true避免意外暴露
search.exclude 是独立开关,不配它,.env 能看见但搜不到
资源管理器里看到 .env 了,但 Ctrl+Shift+F 全局搜索却找不到它的内容?大概率是 search.exclude 还在起作用。它和 files.exclude 完全解耦,不会自动同步。
同样在远程 settings.json 中检查是否存在 search.exclude 字段。如果没有,VSCode 会回退使用内置默认值(含 "**/.*": true)。所以最可靠的方式是显式声明:
"search.exclude": {
"**/.DS_Store": true,
"**/.git/**": true,
"**/.*": false
}
- 这个配置必须和
files.exclude保持一致,否则会出现“看得见、搜不见”或“搜得到、看不见”的割裂体验 - 临时跳过某些目录搜索,比如只想这次不搜
node_modules,可用搜索框右上角的files to exclude输入框填node_modules/**,不污染配置 - 插件(如 GitLens)可能绕过
search.exclude自行读取文件,若发现搜索结果异常,可先禁用插件验证是否为其干扰
为什么改完重开文件夹还是不刷新?检查工作区设置是否覆盖了远程配置
即使你正确改了远程 settings.json 并重开了文件夹,.env 依然不显示,大概率是项目根目录下存在 .vscode/settings.json,其中定义了 files.exclude,且它优先级高于远程用户设置。
解决方法:在远程窗口中,运行 Preferences: Open Workspace Settings (JSON),查看是否有 files.exclude 字段。如果有,它会完全覆盖你在远程用户设置里写的规则。
- 团队项目建议统一把
files.exclude写进.vscode/settings.json并提交 Git,避免每人各自配置 - 若只是临时调试,可先清空该文件中的
files.exclude,或注释掉整块,确保远程用户设置生效 - 注意:
.vscode/settings.json是工作区级,只对当前文件夹生效;而Open Remote Settings (JSON)是远程用户级,影响该远程主机上所有工作区(除非被工作区覆盖)
远程开发中隐藏/显示文件的真正难点不在语法,而在配置生效层级的混淆:本地、远程用户、远程工作区三层 settings 之间存在明确覆盖关系,且每层都需要对应的操作入口和重载方式。漏掉任何一层,都会导致“明明改了却没用”。











