原生 highlight_word 悬停即高亮,不依赖选中;wordhighlight 插件仅在双击完整选中单词时触发高亮,需配置 word_separators、ignore_scope_list 等参数并确保主题定义 wordhighlight scope。

原生 highlight_word 开启后光标悬停就高亮,但不响应选中
Sublime 自 build 3143 起内置 highlight_word,只要在用户设置里加 "highlight_word": true 并重启,光标停在任意单词(如 user_id)上,所有完全匹配项就会浅色背景高亮。但它**不依赖选中动作**——你双击选中、按住 Shift 拖选、甚至只把光标放在字母上,它都一样触发。所以如果你想要“选中才高亮”,这个功能直接不适用。
常见误操作:
– 在设置里写了 "highlight_when_selection_empty": false,但这参数对原生无效,只在 WordHighlight 插件配置里起作用
– 右下角亮着 .*(正则模式),此时 highlight_word 的匹配逻辑会被覆盖,退出正则再试
– 主题太暗(如 Dracula),高亮色 fallback 成极淡灰,肉眼看不见;可临时切到 Monokai Bright 验证是否真没生效
WordHighlight 插件必须双击完整选中才触发高亮
要实现“选中才高亮”,得用 WordHighlight 插件。它不响应悬停,只在你**双击选中一个完整单词**时激活。比如想高亮所有 api_url,必须双击时整个词被蓝框包住(不能光标落在下划线 _ 上,也不能带末尾分号或括号)。
容易失败的几个硬性条件:
– 文件语法识别为 Plain text 时,默认不工作;切换到 Python 或 JavaScript 语法再试
– word_separators 里包含下划线 _(默认值),导致 user_id 被拆成两个词;需在语法专属设置里显式覆盖:"word_separators":"./\()\"'-:,.;~!@#$%^&*|+=[]{}`? "
– 插件默认跳过字符串和注释;若要高亮引号内的 "api_url",必须在 WordHighlight.sublime-settings 中设:"word_highlight_in_comments": true 和 "ignore_scope_list": []
高亮颜色看不见?问题八成出在主题 scope 定义
WordHighlight 使用的样式名是 wordhighlight,但它不直接写死颜色,而是查当前主题的 .tmTheme 文件里有没有定义这个 scope。多数暗色主题(Monokai、Dracula)压根没配,结果 fallback 到几乎透明的灰色背景。
验证方式:
– 选中一个词 → 右键 → Developer → Show Scope Name,看最后一段是不是 wordhighlight
– 如果是,说明插件已命中,但主题缺定义;如果不是,说明插件根本没加载或没走对规则
– 临时解决:换用 Adaptive 主题,颜色立刻明显;长期方案是手动编辑主题文件,加入 wordhighlight 的 background 值
别混用 highlight_word 和 WordHighlight
两者底层完全独立:
– 触发时机不同:一个是悬停,一个是双击选中
– 配置文件不同:原生开关在用户 Settings,插件配置只在 WordHighlight.sublime-settings
– 高亮样式不同:原生用 highlight scope,插件用 wordhighlight,主题里得分别定义
– 作用域过滤不同:原生默认进字符串,插件默认跳过,除非你主动关掉 ignore_scope_list
真正容易被忽略的是:改了 word_separators 会影响双击选中逻辑本身——比如你为让 user_id 整体匹配而删掉下划线,那以后双击 user_id 是能高亮了,但双击 get_user() 里的 user 就再也选不中了。











