最近在用visual studio code 编写sql语句时发现有很多sql语句关键字没有高亮显示
看着有点不爽, 刚开始想通过插件解决这个问题,试了很多次也没找到满意的,
然后就萌生了一个大胆的想法,修改系统文件自定义语法高亮!!!
结果误打误撞最终竟然实现,下面是实现方法
首先找到相关联的语法匹配文件:
在visual studio code 安装目录下的
Microsoft VS Code\resources\app\extensions\sql\syntaxes 目录下有个SQL.plist文件
这是一个xml格式的文件,包含大量的正则表达式 用于匹配关键字
一条匹配规则包含再一对<dict></dict>标签中
例如
<dict>
<key>match</key>
<string>(?i:\b(values|go|use|into|exec|execute|openquery)\b)</string>
<key>name</key>
<string>keyword.other.DML.II.sql</string>
</dict>
其中<key>标签里的内容不用管,
关键是<string>标签的内容:
第一个<string>标签是关键字匹配规则:
第二个<string>标签是显示模式
例如
上面这个表达式匹配的有
values , go , use , into , exec , execute , openquery
这些sql关键字
用 keyword.other.DML.II.sql 模式显示
显示模式是固定的 : 就是在visual studio code 中 这些关键字显示的颜色
知道了匹配原理 下面要做的就是自定义一条匹配规则
将示例中的<dict></dict>复制一份
把第一个<string>标签中的关键字 替换为自己想要的, 多个关键字之间用 或运算符号 ‘ | ‘隔开
再修改第二个<string>标签中的显示模式,
(显示模式是系统固定好的,具体的显示效需要自己去尝试了)
例如:
<dict>
<key>match</key>
<string>(?i:\b(unsigned|unique|exists|default|zerofill|auto_increment|comment)\b</string>
<key>name</key>
<string>constant.numeric.sql</string>
</dict>
下面是修改前与修改后的对比:
增加了unsigned , unique , exists , default , zerofill , auto_increment , comment等关键字
修改前:

修改后:

修改文件前记得先备份一下,以免改错了导致VScode显示不正常