quick-highlight需通过三层配置实现多颜色标记:keymap.cson绑定不同快捷键,config.cson为各键定义关键词、class名及背景色,styles.less用!important写CSS样式生效;缺一不可。

quick-highlight 怎么启用多颜色标记
quick-highlight 本身不支持“一个关键词一种颜色”的多色标记,它每次高亮只走一套 CSS 规则;所谓多颜色,本质是靠多次触发 + 不同配置项组合实现的。必须手动在 keymap.cson 或插件设置里为不同快捷键绑定独立的高亮行为。
- 默认快捷键
ctrl-shift-h(Windows/Linux)或cmd-shift-h(macOS)只打开一个输入框,所有匹配都用同一套样式 - 要实现多颜色,得复制多组快捷键映射,每组对应一个预设关键词 + 颜色 + 背景透明度
- 例如:用
ctrl-shift-1高亮TODO(黄色背景),ctrl-shift-2高亮FIXME(红色背景),需分别配置
如何在 keymap.cson 中配置多个高亮规则
直接改 keymap.cson 是最稳定的方式,避免插件 UI 设置被重置。Atom 启动时会按顺序加载这些映射,后定义的规则优先级更高。
- 打开 Atom → Config → Open Config Folder,编辑
keymap.cson - 添加类似以下内容(注意缩进是两个空格):
'atom-text-editor': 'ctrl-shift-1': 'quick-highlight:highlight-by-input' 'ctrl-shift-2': 'quick-highlight:highlight-by-input' 'ctrl-shift-3': 'quick-highlight:highlight-by-input' '.platform-win32 atom-text-editor, .platform-linux atom-text-editor': 'ctrl-shift-1': 'quick-highlight:highlight-by-input' 'ctrl-shift-2': 'quick-highlight:highlight-by-input' 'ctrl-shift-3': 'quick-highlight:highlight-by-input'
然后在 config.cson 里对应配置每组的行为(路径:Atom → Config → Open Config Folder → config.cson):
"quick-highlight":
"highlightByInputKeymaps":
"ctrl-shift-1":
"pattern": "TODO"
"className": "quick-highlight-todo"
"backgroundColor": "rgba(255, 204, 0, 0.3)"
"ctrl-shift-2":
"pattern": "FIXME"
"className": "quick-highlight-fixme"
"backgroundColor": "rgba(255, 87, 51, 0.3)"
"ctrl-shift-3":
"pattern": "NOTE"
"className": "quick-highlight-note"
"backgroundColor": "rgba(102, 187, 106, 0.3)"
为什么自定义 className 必须配合 styles.less
className 只是加了个 DOM class 名,不写 CSS 就等于没生效。quick-highlight 不提供内置颜色主题,所有视觉效果都靠你手写 styles.less 控制。
- 打开 Atom → Stylesheet…,编辑
styles.less - 每个
className必须单独定义,且加!important才能压过默认样式 - 示例:
.quick-highlight-todo {
background-color: rgba(255, 204, 0, 0.3) !important;
border-bottom: 1px dashed #ffcc00 !important;
}
.quick-highlight-fixme {
background-color: rgba(255, 87, 51, 0.3) !important;
border-bottom: 2px solid #ff5722 !important;
}
容易踩的坑:正则、跨行与性能
quick-highlight 支持正则和跨行匹配,但开启后会显著拖慢大文件(>2000 行)滚动,尤其在开启多个标记时。
- 正则模式需手动勾选 “Use regex” 选项,否则
^TODO$这类写法会被当字面量处理 - 跨行匹配(
[\s\S]*)在 Vue/JSX 文件中极易误匹配,比如把整个<template>块标红——建议禁用 “Match across lines”,仅用于日志或纯文本片段 - 同时启用超过 4 个高亮规则时,Atom 主进程 CPU 占用可能突增;观察底部状态栏是否出现 “Scanning for highlights…” 提示
- 别和
highlight-selected混用高亮区域:二者都依赖 DOM marker,叠加后光标移动或滚动易卡顿
多颜色标记不是开箱即用的功能,它依赖三层协同:keymap.cson 绑定快捷键、config.cson 定义每组 pattern 和 class、styles.less 实际绘制样式。漏掉任何一层,颜色就出不来。真正麻烦的不是配置,而是每次换 Atom 版本或重装插件后,config.cson 里的 highlightByInputKeymaps 段落常被覆盖或清空——建议把它单独抽成注释块,放在文件末尾,人工备份。

















