在 Sublime Text 中,为 .js 文件单独设置 tab_size = 2,需打开 .js 文件后通过 Preferences → Settings – Syntax Specific 编辑 JavaScript.sublime-settings,写入 { "tab_size": 2, "detect_indentation": false };配置仅对绑定 JavaScript 语法的文件(如 .js、.jsx)生效,且须确保右下角显示“JavaScript”,否则设置不加载。

怎么给 .js 文件单独设置 tab_size = 2?
Sublime Text 不靠全局配置,而是靠「语法专属设置」——每个后缀对应一个 Syntax-specific Settings 文件。你改的不是 Preferences.sublime-settings,而是 JavaScript.sublime-settings。
操作路径:菜单 → Preferences → Settings – Syntax Specific(注意:必须先打开一个 .js 文件,再点这个菜单,否则选项是灰色的)
- 文件会自动以
JavaScript.sublime-settings命名,保存在Packages/User/下 - 写进去的配置只对
.js、.jsx(默认绑定 JavaScript 语法)生效,不影响.ts或.py - 如果已有同名语法设置(比如你之前配过
JSON.sublime-settings),它会覆盖默认行为,但不会影响其他语言
{
"tab_size": 2,
"detect_indentation": false
}
为什么改了 settings 没生效?
常见原因不是配置写错,而是 Sublime 没识别对当前文件的语法类型——tab_size 这类设置依赖语法高亮引擎的绑定结果。
- 检查右下角状态栏显示的语法名,比如是
Plain Text而不是JavaScript,说明文件没被正确识别,此时JavaScript.sublime-settings完全不加载 - 手动切换语法:右下角点击 → Set Syntax → JavaScript;或快捷键
Ctrl+Shift+P→ 输入Set Syntax: JavaScript -
detect_indentation设为true(默认)时,Sublime 会扫描文件前几行缩进并覆盖你设的tab_size,所以务必关掉它
如何让 .env 文件用纯文本但禁用自动换行?
这类小众后缀没有内置语法包,得先确保它被识别为某个语法(比如 Plain Text),再针对性配。
- 先打开一个
.env文件,右下角手动设成Plain Text - 再执行 Preferences → Settings – Syntax Specific,生成
Plain Text.sublime-settings - 这个文件会对所有被识别为
Plain Text的文件生效,所以别乱放通用配置(比如别在里面写"font_size": 14)
{
"word_wrap": false,
"draw_white_space": "all"
}
多个后缀共用同一套配置,怎么避免重复写?
Sublime 不支持“一个配置文件管多个后缀”,但可以靠语法继承和命名约定绕过去。
- 比如你想让
.ts和.tsx都用tab_size: 2,就得分别建TypeScript.sublime-settings和TypeScriptReact.sublime-settings(因为 TSX 默认绑定的是后者) - 如果你装了
EditorConfig插件,它能按项目根目录的.editorconfig文件统一控制缩进,比 Sublime 自带语法设置更灵活,也更易协作 - 注意:自定义语法(比如用 PackageDev 写的
MyLang.tmLanguage)对应的设置文件名,必须严格匹配语法定义里的name字段,而不是文件后缀









