sublime怎么修改选中文本的颜色_Sublime配色方案自定义【进阶】

当前生效的 .sublime-color-scheme 文件可通过 preferences → color scheme 菜单顶部路径定位,如 packages/user/dracula.sublime-color-scheme;右键复制到 packages/user 后编辑 rules 数组,添加 “name”: “selection” 规则并设 6 位 hex background 值即可生效。

sublime怎么修改选中文本的颜色_Sublime配色方案自定义【进阶】

怎么定位当前生效的 .sublime-color-scheme 文件

Sublime Text 4(v4143+)只认 JSON 格式的 .sublime-color-scheme,旧版 .tmTheme 已被弃用。改错文件等于白改——你看到的“选中高亮色”,只由当前启用的 color scheme 文件中的 "name": "Selection" 规则控制,和 Preferences.sublime-settings 或 UI 主题完全无关。

  • 打开 Preferences → Color Scheme,看顶部路径:比如 Packages/Color Scheme - Default/Mariana.sublime-color-schemePackages/User/Dracula.sublime-color-scheme
  • 右键该路径 → Copy to Packages/User(别直接编辑内置路径下的文件,更新后会丢失)
  • 用 Sublime 打开你复制到 Packages/User/ 下的副本,确保它正在被启用(菜单里已勾选)

rules 数组里加一条合法的 Selection 规则

选中背景色不是靠改 globals 里的 selection 字段,也不是靠写 "scope": "selection"(这个 scope 不存在)。Sublime 只响应 "name": "Selection" 这个固定名称的 rule,且必须放在 "rules" 数组内,不能塞进 "globals" 或顶层对象里。

  • 在文件末尾的 "rules" 数组中添加新对象(注意逗号分隔):
 {   "name": "Selection",   "background": "#2a5c3a" } 
  • background 值必须是 6 位十六进制(如 #2a5c3a),不支持带透明度的 8 位写法(#2a5c3a80 会被整条忽略)
  • 不要加 foreground——它对选中文本无效;若想改选中文字颜色,得另配 "name": "Selection Foreground"(极少数主题支持,非标准行为)
  • 保存后立即生效;若没变化,看 Sublime 窗口右下角状态栏是否报 JSON 错误(比如少逗号、引号不匹配)

为什么改了没反应?常见失效原因

不是配置逻辑复杂,而是几个关键点一错就静默失败,连报错都不给。

  • .sublime-color-scheme 是严格 JSON,注释(///* */)会导致整个文件加载失败
  • 把规则加在 "globals" 下:Sublime 完全无视,选区颜色仍走默认 fallback
  • 用了第三方主题但没复制到 User/ 目录:升级主题包时你的修改会被覆盖
  • 路径写错或文件名拼错(比如 MyTheme.sublime-colorscheme 少了个 -):Sublime 找不到文件,自动回退到内置方案
  • 颜色太接近背景(如 #1e1e1e 在深色主题上):不是没生效,是根本看不见

要不要动 .tmTheme?现在基本不用

如果你还在用 .tmTheme(XML 格式),说明你卡在 ST3 或用了老插件导出的主题。2026 年主流环境已是 ST4 + .sublime-color-scheme。强行改 .tmTheme 需额外装 PackageResourceViewer 提取,且转换后还得手动迁移到新格式——不如直接新建一个 .sublime-color-scheme 文件更可控。

  • 新建空文件,命名为 MySelection.sublime-color-scheme,放入 Packages/User/
  • 粘贴标准结构(含 "version""globals""rules"),再加入上面那条 "name": "Selection" 规则
  • 通过 Preferences → Color Scheme 手动选中它,避免路径引用残留问题

真正容易被忽略的,是 Sublime 对 JSON 格式零容忍——一个多余的逗号,就能让整个选区颜色回归默认,而你可能花十分钟检查颜色值,却漏看了那一行末尾。