highlight-selected 仅响应选中行为,不能直接高亮任意字符串;它区分大小写、限于当前文件、需快捷键触发(Ctrl/Cmd+左键),定位是标识符上下文追踪而非模式扫描。

highlight-selected 能不能高亮任意关键字?
不能直接高亮任意字符串,它只响应“选中行为”——必须先选中文本,再触发高亮。比如你双击 fetch,它才会高亮当前文件里所有 fetch;但没法像正则那样匹配 TODO 或 FIXME 这类固定模式。
如果你的目标是标记待办项(如 // TODO:),todo-show 才是正解;highlight-selected 的定位是变量/标识符上下文追踪,不是模式扫描。
- 它区分大小写,且不关心作用域,
const API_URL和function api_url()会被同时高亮 - 快捷触发方式是按住
Ctrl(macOS 是Cmd)+ 左键点击单词,前提是已关闭Clear highlights when cursor moves - 高亮范围严格限于当前打开的文件,不会跨标签页,也不扫描项目目录
language-todo + todo-show 是怎么配合工作的?
language-todo 不是可选插件,它是基础支撑:它把 // TODO:、/* FIXME */ 这类注释识别为带 keyword.todo scope 的 token,而 todo-show 依赖这个 scope 才能精准提取、分类、渲染成面板列表。
没装 language-todo,todo-show 仍能用正则扫出文字,但无法着色、无图标、右键菜单缺失,且无法区分 TODO 和普通注释文本。
-
language-todo只做语法着色,不修改文件内容,与language-javascript等共存无冲突 - 高亮失效时,先看右下角 grammar 是否显示正确;若为
Plain text,手动选择对应语言(如JavaScript) -
todo-show默认只搜打开的文件,想全项目扫描需配合命令行工具(如rg TODO)
想高亮自定义关键词(比如 API_KEY、DEPRECATED)怎么办?
Atom 原生不支持“全局关键词高亮”,但可通过 styles.less + 自定义 scope 实现有限覆盖:
先确认这些词是否已有语义 scope(比如在注释里出现,就属于 .syntax--comment);若在代码中裸写,Atom 默认当普通文本,没有 scope,styles.less 无法命中。
- 可行路径:装
language-custom插件,手写 CSON 语法规则,为API_KEY匹配单独 scope(如constant.other.api-key),再在styles.less中定义颜色 - 更轻量做法:用
highlight-selected快捷键临时高亮——Ctrl+点击API_KEY,立刻全文标出,适合审阅阶段 - 注意:
styles.less中写.syntax--source .syntax--string { color: red; }会影响所有字符串,不是关键词级控制
为什么改了 styles.less 没生效?
常见原因不是语法错,而是 scope 名不对或优先级被覆盖。Atom 高亮颜色由语法主题决定,styles.less 只是覆盖层,必须用 !important 且命中真实 scope。
验证当前光标位置的 scope:按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入 Editor: Log Cursor Scope 回车,看输出第一行,比如 source.python 或 comment.line.double-slash.js。
- scope 名含点号(
.),CSS 选择器要写成.syntax--comment.syntax--line.syntax--double-slash - 务必加
!important,否则语法主题的 CSS 规则会赢过你的样式 - 改错可能导致文字消失(如设成
color: transparent),恢复只需删掉那行再保存
真正容易被忽略的是:Atom 的高亮机制是“语言包 → scope → 主题样式”三级链路,任何一环断开(比如 .vue 文件没映射到 source.vue,或 language-vue 没启用),后续所有定制都无效。先跑通基础语法识别,再谈高亮定制。











