如何修改VS Code中SIMOTION ST代码的专属配色方案
关于VS Code匹配SIMOTION SCOUT ST代码配色的解决方案
1. 如何获取ST代码配色规则并生成语言配置?
- 先提取SIMOTION SCOUT的配色细节:打开SCOUT编辑器,逐一记录关键字、单行注释、多行注释、变量、常量、字符串、函数名等不同代码元素的颜色,记下对应的RGB值。
- 参考现有VS Code的ST语法配置:找支持IEC 61131-3的ST类插件,查看它们的TextMate语法文件(通常为
.json格式的grammar文件),里面定义了各类代码元素的语法范围(scope)。 - 生成自定义配置:如果仅需调整配色,无需修改语法逻辑,直接针对现有scope配置对应颜色即可;若需补充语法识别规则,可基于现有grammar文件修改或新增scope定义。
2. 文本配色是在主题区域设置,还是可通过语言package.json配置?
两者都支持,但适用场景不同:
- 主题设置:全局生效,会影响所有语言的同类型元素,不适合单独针对ST做专属定制。
- 语言package.json配置:可在ST语言插件的
package.json中通过contributes.colorCustomizations字段,仅针对ST语言的特定scope设置配色,不会干扰其他语言的显示。 - 此外,直接在VS Code的用户设置(
settings.json)中配置,灵活度更高,无需修改插件代码。
3. 不影响其他代码/主题配色的前提下匹配SCOUT的ST配色方案
最稳妥的方式是在用户设置中针对ST语言单独配置token颜色,步骤如下:
- 打开VS Code命令面板(Ctrl+Shift+P),执行
Developer: Inspect Editor Tokens and Scopes,将光标放在ST代码的不同元素上,查看对应的scope名称(比如关键字的scope是keyword.control.st,单行注释是comment.line.double-slash.st)。 - 打开用户设置文件(
settings.json),添加editor.tokenColorCustomizations配置,针对当前主题和ST语言的scope设置对应颜色:
"editor.tokenColorCustomizations": { "[你的主题名称]": { "textMateRules": [ { "scope": "keyword.control.st", "settings": { "foreground": "#0000FF" // 替换为SCOUT中关键字的实际RGB颜色 } }, { "scope": "comment.line.double-slash.st", "settings": { "foreground": "#008000" // 替换为SCOUT中单行注释的实际RGB颜色 } }, { "scope": "string.quoted.double.st", "settings": { "foreground": "#800000" // 替换为SCOUT中字符串的实际RGB颜色 } } // 按此格式补充其他元素的配色规则 ] } }
- 若想做成可复用的配置,也可以创建一个简易VS Code插件,在
package.json中添加如下配置,仅对ST语言生效:
"contributes": { "colorCustomizations": { "editor.tokenColorCustomizations": { "language": "st", "textMateRules": [ // 这里放入所有ST元素的配色规则 ] } } }
内容的提问来源于stack exchange,提问作者Stefano Martini
相关产品推荐
相关产品推荐

