Sublime Text 项目设置必须写在与项目根目录平级的 .sublime-project 文件中,为合法 JSON 格式,修改后需执行“Save Project As…”才能生效;它完全覆盖同名全局设置,不叠加。

项目设置文件放在哪?
Sublime Text 的项目级配置必须写在 .sublime-project 文件里,不能塞进 Preferences.sublime-settings 或文件夹右键菜单里的“Project Settings”。这个文件得和你项目的根目录平级,比如你的代码在 /Users/me/myapp/,那 myapp.sublime-project 就得放在同一层。
常见错误是手动生成了 .sublime-workspace(它自动生成、只存窗口状态)或误把用户设置当项目设置改——改了没用,重启也不生效。
-
.sublime-project是纯 JSON,必须合法:末尾不能多逗号,字符串得双引号,true/false不能加引号 - 如果项目已打开,改完文件要执行
Project → Save Project As…才会真正写入并激活(仅保存文件不触发重载) - 没有该文件时,Sublime 默认走全局设置;一旦存在,它会**完全覆盖**同名设置项,不是“叠加”
怎么让不同项目用不同 Python 解释器?
靠 settings 里的 python_interpreter 键,但注意:它只对 Sublime 的内置构建系统(如 Python)生效,不影响终端插件(如 Terminus)或 LSP 客户端(如 LSP-pyright)。
典型场景是:你在 Django 项目里想用 venv 的 python,但在工具链里又依赖全局 black 格式化——这时候光设 python_interpreter 不够,还得配 shell_cmd 或插件专属设置。
- 路径必须绝对,比如
/Users/me/myapp/.venv/bin/python,不能写./.venv/bin/python - Windows 下路径用正斜杠或双反斜杠,避免单反斜杠被 JSON 当转义符:
C:/Users/me/myapp/.venv/Scripts/python.exe - 如果构建时报
Unable to find python,先在终端里手动运行该路径确认可执行,再检查 Sublime 是否有权限读取该路径(尤其 macOS 上的 SIP 或 Apple 全盘控制)
为什么 exclude_patterns 不生效?
folder_exclude_patterns 和 file_exclude_patterns 是最常配错的两个字段。它们只在侧边栏(sidebar)起作用——也就是隐藏文件/文件夹显示,**不影响搜索(Find in Files)、Goto Anything、或任何插件的文件扫描逻辑**。
比如你写了 "folder_exclude_patterns": ["__pycache__"],但用 Ctrl+P 还能搜到 __pycache__/xxx.py,这不是 bug,是设计如此。
- 模式是 shell glob,不是正则:
"*.log"可以,".*\.log"会失效 - 排除整个文件夹时,结尾不加斜杠:
"__pycache__"✅,"__pycache__/"❌ - 如果用了符号链接(symlink),排除规则对链接目标无效;想排除链接本身,得写链接名,不是目标路径
插件设置能写在项目里吗?
可以,但取决于插件是否支持。主流插件如 EditorConfig、SublimeLinter、LSP 都允许在 .sublime-project 的 settings 下嵌套自己的配置块,比如 "lsp_format_on_save": true。
但别指望所有插件都认这个位置——很多老插件只读 Packages/User/xxx.sublime-settings,项目文件里写同名字段会被直接忽略。
- 查文档最靠谱:搜 “
plugin-name sublime project settings”,看 GitHub README 或官方 Wiki 是否明确列出支持的字段 - 字段名大小写敏感,
"eslint_enable"和"EslintEnable"是两回事 - 如果插件没反应,打开
View → Show Console,执行sublime.log_commands(True),再触发相关操作,看日志里有没有加载你写的配置项
tab_size 可能被项目文件、Python.sublime-settings、甚至当前文件顶部的 modeline 同时影响——调的时候得一层层关掉干扰项,不然永远不知道到底是谁在说话。

















