Sublime Text 默认不识别 Solr 查询语法,q、fq、json.facet 在.json文件中仅为普通字符串色;SolrQuery插件默认仅绑定.solr后缀,需手动配置语法关联与配色规则才能实现精准高亮。

Sublime Text 本身不识别 Solr 查询语法,q、fq、json.facet 在 .json 文件里默认就是普通字符串色——这不是插件没装好,是 Sublime 根本没把它们当“查询参数”解析。
为什么 q=price:[10 TO 20] 在 JSON 里还是灰色?
因为 JSON 语法只负责解析结构,不分析字段值内容。"q": "price:[10 TO 20]" 中的整个右值被当作 string.quoted.double.json 处理,方括号、TO、冒号全无语义。即使装了 SolrQuery 插件,它默认只绑定 .solr 后缀,对 .json 文件不生效。
验证方法:光标停在 q 上,按 Ctrl+Shift+P → 输入 Developer: Show Scope Name。如果看到的是 string.quoted.double.json,说明当前文件完全没走 Solr 语法;只有出现类似 keyword.solr.param 或 support.parameter.solr 才算识别成功。
怎么让 .solr 文件真正高亮 [10 TO 20] 和 json.facet?
SolrQuery 插件自带的 .solr 关联只是基础规则,[10 TO 20] 常被当作文本忽略,json.facet 也不会自动标记为 facet 字段。必须补 scope 并配色才能精准着色。
- 新建测试文件
test.solr,输入q=price:[10 TO 20]&json.facet={} - 分别把光标停在
[、TO、json.facet上,用Developer: Show Scope Name查看实际 scope(如keyword.solr.range、support.field.solr.facet) - 打开你正在用的配色方案(路径类似
Packages/User/MyMonokai.sublime-color-scheme),在"rules"数组末尾添加对应规则,例如:{"name":"Solr range","scope":"keyword.solr.range","foreground":"#FF6B6B"} - 保存后,进
Preferences → Color Scheme重新选一次主题,否则不刷新
想用 .json 写 Solr 查询,又不想影响其他 JSON 文件?
硬绑 .json 到 SolrQuery 语法最省事,但副作用明显:所有 .json 都会失去标准 JSON 高亮,配置文件、API 响应体等阅读体验变差。
更稳妥的两种做法:
- 项目级覆盖:在项目根目录建
.sublime-project,在"settings"下加:"syntax": "Packages/SolrQuery/SolrQuery.sublime-syntax"
- 后缀语义隔离:把 Solr 查询文件统一改成
.solr.json,然后编辑Packages/User/SolrQuery.sublime-syntax,在file_extensions数组里加上"solr.json"
避免用 ApplySyntax 做内容匹配(比如靠 "q=" 字符串判断),因为 Solr 查询常嵌在 JSON body 里,正则易误判,且每次改规则都要重启 Sublime。
配色规则加了,但 q 还是没变色?
常见原因不是语法没识别,而是配色方案里漏写了 scope 对应规则,或写错了 scope 名——大小写、点号、下划线都必须完全一致。比如 keyword.solr.param 写成 keyword.solr.param (末尾多空格)或 keyword.solr_param(下划线错)都会失效。
另一个容易被忽略的点:某些主题的 .sublime-color-scheme 文件里用了 background 覆盖了 foreground 效果,导致文字颜色被背景吞掉。建议先用纯 foreground 测试,确认 scope 生效后再叠加 background。


















