我从零开始构建了自己的 VS Code 语法高亮器,以下是我学到的东西。Redshift 语法高亮器

2025-06-08

我从头开始构建了自己的 VS Code 语法高亮器,以下是我学到的东西。

Redshift 语法高亮器

背景/目的

所以...!
我是 AWS Redshift SQL 环境中的数据分析师。

就上下文而言,现场分析师倾向于使用的环境按受欢迎程度排序为: 1
TSQL/SQL Server
2 Oracle
3 PostgreSQL
4 电子表格/Google Sheet
5 废纸
6 Crystal Reports
7 Lotus Notes
...... 40 使用算盘 41 洞穴绘画 42 Redshift AWS




因此可以说,在互联网上很难找到 Redshift 特定的技术。

当我在 VS Code 扩展商店中搜索 Redshift 时,什么也没有!!!!

嗯,这是一个小谎言,有一个,但这也是一个谎言,它只是因为 SEO 而被标记为 Redshift......

现在这对我来说已经不是什么大问题了。

Redshift 与 PostgreSQL 和 Oracle 非常相似,因此我一直在使用基于 Oracle 的扩展。

然而,我一直在使用的 Oracle Extension 随着时间的推移变得越来越大并且错误越来越多。

该扩展程序还可以做 60 件不同的事情,而我只用了其中 2 件。

因此,似乎我需要的只是 SQL 语法高亮和一个代码片段库,我想我可以尝试制作自己的语法高亮器扩展,这样我就可以摆脱 bloaty-mcbloat 的困扰。

(我只会使用内部全局代码片段文件)

以下是我一路走来学到的经验教训。

第一课:没有人建造我可以偷的东西。

所以我完全认为我可以通过 git-bash 来获得成功。

我百分之百地认为我可以使用 Oracle Extension 并取出我需要的部分,并且可以在晚餐前完成。

我大错特错。

有两种方法可以实现语法高亮。

方法一要求你使用 REGEX 表达式在 JSON 包中声明要高亮的内容。VSCode 文档中已经提到了这一点。

方法二只需要下载 TextMate 语言包,无需其他操作。就这样,大功告成。无需任何开发工作。

我看过的每个扩展都使用了 TextMate 语言包方法。我能找到 Redshift 的语言包吗?找不到。我能修改现有的语言包吗?目前我还没找到。

所以这是第一次精神崩溃,git-hub 上的每个人都选择了简单的方法,因为他们支持的语言足够主流,可以有一个易于获取的语言包。

我感觉我正在为我的摩托罗拉手机寻找一个手机壳,但我所能找到的只有三星和苹果手机壳。

所以我不得不选择第一种方案,自己开发一些东西。

第 2 课:它并不像我想象的那样自由。

所以语法高亮不仅仅是高亮所有非自由文本。你可以这样做,但我也可以把所有变量都命名为 VAR,虽然能完成任务,但效率不高。

良好的语法高亮可以使函数的颜色与变量的颜色不同,注释的颜色与字符串的颜色不同。

通过不同的突出显示区域,您的眼睛可以捕捉到您正在寻找的代码位。

我知道对于 SQL,我想突出显示以下内容:
命令,例如“select”和“where”
数据类型,例如“varchar”
单引号和双引号字符串
单注释和块注释
函数,例如“row_number”和“upper”
特殊词,例如 distkey
特殊字符,例如“<>”
数字
活动词,例如“and”、“or”、“else”

当我写出我想要从 AWS 规范中突出显示的每个对象时,它已经是一个很长的列表,大约有 300 个。

现在我只是假设我会按照我想要的方式对它们进行分组,然后应用规则。

我又错了……

由于 Visual Studio Code 的主题设置方式多种多样,因此我们预先设置了相应的组供您选择。这使得主题设计人员的工作变得轻松,他们只需指定某个组的颜色即可。无论您使用的是 87547868545874 种编程语言中的哪一种,只要与预定义的组匹配,它就会随着主题的变化而变化。

这意味着我必须将我计划好的组塞进我可用的组中。

这并不像我想象的那么糟糕,我最终使用了十个组,结果接近我最初想要的效果,只是不是我预期的那样。

第 3 课:它并不像我想象的那么难。

我不是开发人员,我懂基本的 HTML/CSS 和 SQL,而且我已经把这些技能磨练得炉火纯青了。我就像那些木工,能做出超赞的信箱,却不会让我做椅子或栅栏。

我不懂 Javascript、TypeScript 之类的东西,也不知道这些东西是怎么工作的。为了做一个 VS Code 扩展,我看了 YouTube 视频,拉了 git,每次都哭上整整五分钟。你知道含着泪水读 ReadMe.md 文件有多难吗?

但我只是继续笨手笨脚地前进,发现以我的技术水平,这很容易做到。

下一分钟,我正在编译扩展,它现在在我的工作机器上运行。

Git Hub 仓库

GitHub 徽标 ronsoak / vsc_redshift_extension

Visual Studio Code 扩展支持在 Redshift (AWS) SQL 环境中工作

Redshift 语法高亮器

简而言之,Visual Studio 代码中没有针对 Redshift AWS SQL 的语法突出显示,因此我制作了自己的它,它并不华丽,也永远不会华丽。

特征

语法高亮显示:

  • SQL 命令,如 Select、Abort、Begin...
  • SQL 关键字如 Date_trunc、Distkey、lower...
  • 单行注释
  • 双行注释
  • 单引号字符串
  • 双引号字符串
  • SQL 数据类型,例如 BIGINT、BOOL、VARCHAR
  • SQL 常量,例如 AND、BETWEEN、ILIKE
  • 支持数字高亮
  • 特殊字符,例如 =、<>、=!

技术信息

语法突出显示是通过对应文本元素来完成的。

关键词

与keyword.control匹配的模式:

中止、修改、分析、开始、调用、取消、关闭、评论、提交、复制、创建、释放、声明、删除、丢弃、结束、执行、解释、获取、授予、插入、锁定、准备、重置、撤销、回滚、选择、设置、显示、开始、截断、卸载、更新、真空

与关键字.other匹配的模式:

ABS、ACOS、ADD_MONTHS、APPROXIMATE、PERCENTILE_DISC、ASIN、ATAN、ATAN2、AVG BIT_AND、BIT_OR、BIT-WISE……

我是谁?

链接浏览:https://dev.to/alexantra/i-built-my-own-vs-code-syntax-highlighter-from-scratch-and-here-s-what-i-learned-1h98
PREV
创建良好 JavaScript 变量的 7 种做法
NEXT
React.js - 你需要了解的事情