Sublime Text 没有传统 IDE 的项目工程,仅通过 .sublime-project(纯 JSON 配置)定义文件夹、设置等静态信息,状态保存在不共享的 .sublime-workspace 中;项目配置需通过 Project → Open Project… 加载才生效,且必须打开文件夹而非单文件。

Sublime Text 有没有传统意义上的“项目工程”?
没有。Sublime Text 本身不维护 IDE 那种带生命周期、状态托管、构建上下文的“项目工程”,它只认 .sublime-project 文件——一个纯 JSON 配置,定义了“哪些文件夹被打开”“用什么设置”“分几组窗口”这些静态信息。
你看到的标签页顺序、光标位置、已开终端(比如 Terminus)、甚至折叠状态,默认都不会保存进 .sublime-project;它们存在配套的 .sublime-workspace 里,而这个文件通常不提交、不共享、也不该手动编辑。
- 想让 Sublime “记住项目”,必须先 File → Open Folder… 打开目录,侧边栏出现树形结构后,Project → Save Project As… 才可用
- 如果只打开了单个
.py或.js文件(没开文件夹),菜单里Save Project As…是灰色的——Sublime 没有“项目上下文”可存 -
.sublime-project必须放在项目根目录下,且文件名不能含空格或中文(如my app.sublime-project会失效)
怎么让某个项目用独立的 tab_size、缩进、排除规则?
靠 settings 字段覆盖全局配置。只要项目激活(即通过 Project → Open Project… 加载了 .sublime-project),里面写的设置就自动生效,且只作用于该项目下的所有文件。
常见错误是:直接双击打开文件夹,以为进了项目——其实只是普通文件夹浏览,settings 不加载;或者改完 .sublime-project 后没重载,还在用旧配置。
- 正确路径:Project → Edit Project,在
{"folders": [...], "settings": {...}}的settings对象里写配置 - 常用项示例:
"tab_size": 2、"translate_tabs_to_spaces": true、"folder_exclude_patterns": [".git", "node_modules"] - 路径推荐用变量:
"path": "${folder}"比硬写绝对路径更安全,避免换机器/换用户后失效 - 改完必须关闭再重新 Project → Open Project…,或重启 Sublime;仅保存 JSON 文件不会实时生效
为什么改了 settings 却没反应?常见失效原因
项目配置不是“写了就生效”,它依赖加载时机和作用域判断。最常踩的坑是混淆了“打开方式”和“配置作用域”。
- 用 File → Open Folder… 打开目录 → 不加载
.sublime-project→settings完全不生效 - 用 File → Open File… 单独打开一个不属于当前项目的文件 → 即使项目开着,这个文件也走全局设置,不继承项目
settings -
folders数组里写了非法字段(比如空对象{}或拼错的"pathe")→ 整个folderssection 被跳过,项目变空壳 - 插件不读取视图级设置 → 像
view.settings().get("my_flag")这类调用才受项目配置影响;只读sublime.load_settings()的插件,项目设置对其无效
如何快速切换多个项目?别点菜单
频繁点 Project → Open Project… 选文件太慢,尤其项目多的时候。Sublime 内置了更快的方式,但默认没绑定快捷键。
- 用命令面板:Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输
project,选Project: Switch Project - 给它配快捷键:在
Preferences → Key Bindings用户配置里加一行:{"keys": ["ctrl+alt+p"], "command": "prompt_select_workspace"}(macOS 改为["cmd+alt+p"]) - 终端启动更直接:
subl --project /path/to/myproject.sublime-project,适合脚本或 alias 封装
真正麻烦的不是建项目,而是搞清“什么时候配置才起效”。很多人卡在改完 JSON 没重载,或误以为打开文件夹就等于进了项目——这两点一错,后面所有设置都白调。











