Atom中highlight-selected默认不响应鼠标选中且光标移动即清除高亮,需关闭“Clear highlights when cursor moves”并勾选“Only highlight on selected text”,再用Ctrl+Click强制锁住高亮。

Atom 里想临时划重点(比如高亮某个变量、函数或关键词),别用 highlight-selected 默认配置——它默认不响应鼠标选中,且光标一动就全清,根本留不住。
为什么 highlight-selected 点一下就高亮、松开就消失?
这不是插件坏了,是它默认只做「光标词瞬时匹配」:你双击一个单词,它高亮全文同名项;但只要你按个方向键、切个标签页,或者点别的地方,所有高亮立刻被 Clear highlights when cursor moves 干掉。
- 这个开关默认开启,90% 的人卡在这儿,以为插件失效
-
Only highlight on selected text这个选项名字有误导性——勾选后反而能让你用Ctrl+Click(macOS 是Cmd+Click)强制锁住高亮,且不随光标清除 - 关掉自动清除后,高亮会一直保留,直到你手动执行
highlight-selected:clear-highlights或重启 Atom
怎么让 Ctrl+Click 真正生效,而不是被 parinfer/vim-mode 拦截?
某些插件(尤其是 parinfer 或 vim-mode)会劫持 Ctrl+Click,导致点击无反应。这不是 Atom 本身问题,而是快捷键冲突。
- 先用
atom --safe启动 Atom,测试是否能正常Ctrl+Click高亮——如果可以,说明是某插件干扰 -
parinfer默认绑定Ctrl+Click为“调整括号缩进”,可在其设置里关闭Enable click-to-edit -
vim-mode下建议在keymap.cson里重映射高亮触发键,例如:'atom-text-editor.vim-mode:not(.insert-mode)': 'ctrl-alt-h': 'highlight-selected:toggle'
- 避免同时启用多个高亮类插件(如
quick-highlight和highlight-selected),它们底层都靠 DOM marker,叠加太多会明显拖慢大文件滚动
highlight-selected 和 quick-highlight 有什么区别?
二者定位不同,不是替代关系,但混用容易出问题。
-
highlight-selected关注「语义标识符」:变量名、函数名、类名、CSS 类,依赖语言 scope 解析,对.vue或.tsx文件需正确安装language-vue或language-typescript-react -
quick-highlight是纯文本匹配,支持正则、支持跨行、支持自定义颜色和快捷键(如Ctrl+Shift+H输入关键词),适合临时圈定日志片段、错误码、URL 等非代码结构内容 -
highlight-selected不跨文件,quick-highlight默认也不跨,但可通过脚本扩展;真要搜索整个项目,请用rg或todo-show,别指望这两个插件
高亮颜色调不了?别去改 Syntax Theme
highlight-selected 的颜色由插件自身控制,Syntax Theme 完全不影响它——改主题里的 .syntax--variable 没用。
- 颜色必须在插件 Settings 页面里调:
Highlight Color(十六进制)、Highlight Background(透明度建议设为 0.2–0.3,太浓会遮挡语法色) - 如果用了
pigments,记得把它设为dotmarker 类型,否则和 highlight-selected 的 background marker 叠加后渲染压力陡增 - minimap 里的高亮由
minimap-highlight-selected独立控制,主编辑区关了高亮,缩略图里还能留着——这点常被忽略,但它确实不联动
真正难搞的不是怎么开高亮,而是搞清它「只管当前文件」「只认 scope 解析出的 token」「不处理字符串内内容」——比如你在 JS 里写 console.log("user_id"),user_id 不会被高亮,因为它是字符串字面量,不是变量标识符。这点和 VS Code 的语义高亮逻辑完全不同,得适应。

















