WordHighlight插件未生效需依次排查:安装方式是否正确(推荐Package Control安装)、文件夹名及路径是否规范、word_separators设置是否影响单词识别、其他插件或鼠标映射是否冲突、高亮样式与主题颜色是否兼容,并通过Show Scope Name确认作用域匹配。

WordHighlight 插件没生效?先确认是否已正确安装
Sublime Text 默认不带高亮同词功能,WordHighlight 是第三方插件,必须手动安装。常见失效原因是:只下载了源码 ZIP 但没放进 Packages/ 目录,或用了错误的分支(比如 Sublime Text 4 装了只兼容 ST3 的旧版)。
- 打开 Sublime → Preferences → Package Control → Install Package,搜
WordHighlight并安装(推荐此方式,自动适配版本) - 若手动安装:解压后文件夹名必须是
WordHighlight(不能带版本号或下划线),放入~/Library/Application Support/Sublime Text/Packages/(macOS)或%APPDATA%\Sublime Text\Packages\(Windows) - 安装后重启 Sublime,随便打开一个文件,双击选中一个变量名,看周围是否自动高亮——没反应就说明没装对
高亮不触发?检查 word_separators 和 scope 排除规则
WordHighlight 默认只高亮“单词”,而 Sublime 的 word_separators 设置会影响哪些字符被视作分隔符。例如,user_id 在默认设置下会被拆成 user 和 id,导致无法整体高亮。
- 打开 Preferences → Settings – Syntax Specific(确保当前是你要编辑的语法,如 Python 或 JavaScript),添加:
{ "word_separators": "./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}`~?" } - 如果只想高亮特定作用域(比如只高亮变量,不碰字符串或注释),在
WordHighlight.sublime-settings中启用"ignore_scope_list",加入类似"string.quoted", "comment" - 注意:修改
word_separators会影响整个编辑器的双击选中逻辑,不只是高亮
点击不响应?可能是鼠标事件被其他插件劫持
有些插件(如 SideBarEnhancements、Origami)会重载鼠标行为,导致双击后不触发 WordHighlight 的监听。
- 临时禁用其他插件测试:菜单 → Preferences → Package Settings → [插件名] → Disable Package
- 检查是否有自定义的
Mousemap:打开 Preferences → Browse Packages → User,删掉或重命名Default (OS).sublime-mousemap文件再试 - 确保没有开启
"highlight_on_gutter_click"(该选项会让点击行号区才高亮,不是你想要的“点击词”行为)
颜色太淡或冲突?直接改 highlight_style 和 color_scheme
默认高亮色可能被当前主题覆盖,尤其深色主题下黄色背景几乎不可见。
- 编辑
WordHighlight.sublime-settings,调整:{ "highlight_style": "outline", // 可选 "fill", "outline", "underline" "highlight_opacity": 0.8, "highlight_color": "hsl(60, 100%, 75%)" } - 更彻底的方式:在当前 color scheme(如
Monokai.sublime-color-scheme)里加一条 rule,匹配word_highlightscope:{ "name": "Word Highlight", "scope": "word_highlight", "background": "#ff0" } - 注意:改 color scheme 需重启 Sublime 才生效;如果用了社区主题(如 Ayu),得去对应主题 repo 找原始 scheme 文件改,否则更新后会被覆盖
Sublime 的高亮逻辑依赖于「当前光标位置是否落在单词内」+「该位置是否属于可高亮 scope」,两个条件缺一不可。很多人卡在 scope 判断这一步,却只盯着颜色调——先用 Ctrl+Shift+P → Developer: Show Scope Name 看光标下实际 scope,再决定要不要加 ignore_scope_list。










