必须先保存.sublime-project文件,否则没有“项目”这回事;正确流程是打开文件夹后立即执行Project→Save Project As…并存于根目录,使"folders"写入真实路径且标题栏显示项目名,这才是生效信号。

必须先保存 .sublime-project 文件,否则没有“项目”这回事
Sublime Text 不会自动为你生成项目文件。只点 File → Open Folder…,关掉再开,侧边栏就空了——因为根本没项目上下文。所有状态(折叠、光标、构建系统、Ctrl+P 索引范围)都依赖 .sublime-project 文件存在。
正确流程只有一步:打开文件夹后,立刻执行 Project → Save Project As…,把文件存到项目根目录下(比如 myapp/myapp.sublime-project)。这时 "folders" 数组才会写入真实路径,窗口标题栏也会显示项目名,这才是生效信号。
- 不保存 → 重启后一切归零
- 保存位置错(比如丢进
Packages/或桌面)→ 路径解析失败,侧边栏报folder not found - 用
Save Project(不是Save Project As…)代替首次保存 → 会报错或生成空"folders": []
在一个项目里加多个不相关文件夹,得手动添加并再次保存
想同时编辑 frontend/ 和 backend/?不能靠“打开父目录”蒙混过关。它们必须作为独立条目出现在 "folders" 数组里,否则 Ctrl+P 搜不到 backend 下的文件,侧边栏也只显示 frontend。
操作是:Project → Add Folder to Project… 分别添加两个路径,或右键侧边栏空白处选该选项。每加一个,.sublime-project 的 "folders" 就多一条对象,例如:
{
"folders": [
{"path": "frontend"},
{"path": "backend", "folder_exclude_patterns": ["node_modules"]}
]
}
- 添加完必须再点一次
Project → Save Project(注意不是Save Project As…),否则改动只在内存里,关窗即丢 - 拖拽文件夹到侧边栏也能临时显示,但同样不持久
- 每个文件夹可单独配
folder_exclude_patterns,避免node_modules或.git干扰索引
想真正“切换项目”,就得开新窗口,而不是用 Switch Project
Project → Switch Project 是个陷阱。它只列你曾经手动通过 Project → Open Project… 加载过的项目,且不校验路径是否存在。点进去常报 Unable to open project: path does not exist,尤其当项目移动或重命名后。
可靠做法只有一种:为每个项目单独保存 .sublime-project,然后双击它——Sublime 会以新窗口打开。或者用命令行强制新开:
- macOS/Linux:
subl --new-window /path/to/project - Windows:
"C:\Program Files\Sublime Text\subl.exe" --new-window "D:\my-api" - 漏掉
--new-window参数 → 所有操作都会被路由到当前激活窗口,导致文件夹错乱出现在别的项目里
菜单里的 New Window 或 Ctrl+Shift+N 在多数版本中已失效,别信。
项目设置必须写对位置,改完还得重载才生效
项目级设置(比如 tab_size、font_size)优先级高于用户设置,但前提是写在 "settings" 对象里,且键名完全匹配用户设置中的字段名。
错误写法:"tab_size": 2 直接放在 JSON 顶层,或塞进 "folders" 里,或误写成 "tabSize" —— 全部无效。
正确结构:
{
"folders": [{"path": "."}],
"settings": {
"tab_size": 2,
"translate_tabs_to_spaces": true,
"font_size": 13
}
}
- 改完
.sublime-project后,必须执行Project → Reload Project(或快捷键Ctrl+Alt+P输入 “reload”),仅保存文件不触发重载 -
.sublime-workspace不继承任何设置,它只管标签页、分屏、光标位置,不该提交到 Git - 插件行为不统一:像
GitGutter按当前文件所在路径工作,而ProjectManager才真读.sublime-project
--new-window 就会串窗。这些环节环环相扣,漏掉任意一个,后续所有功能都会失准。


















