VS Code ST语言扩展如何设置大小写不敏感?
解决VS Code ST语言扩展的大小写不敏感配置问题
我来帮你搞定这两个配置问题,不用重复写多份大小写版本的规则,这俩需求都有简洁的实现方式:
1. 让language-configuration.json支持大小写不敏感的缩进/自动闭合
VS Code的语言配置文件本身支持在brackets和autoClosingPairs里使用带忽略大小写标志的正则表达式,不用为每个关键词的大小写变体单独配置。具体做法是把原来的固定字符串替换成带(?i)前缀的正则:
修改brackets配置
把原来的字符串配对改成正则形式,比如:
"brackets": [ ["(?i)VAR", "END_VAR"], ["(?i)IF", "(?i)END_IF"], ["(?i)CASE", "(?i)END_CASE"], // 其他需要配对的关键词 ]
(?i)是正则的忽略大小写标志,这样不管是var、Var还是VAR都会被识别为配对的起始符号,触发缩进和闭合逻辑。
修改autoClosingPairs配置
同样用正则来匹配开头,比如:
"autoClosingPairs": [ { "open": "(?i)VAR", "close": "END_VAR", "notIn": ["string", "comment"] }, { "open": "(?i)IF", "close": "END_IF", "notIn": ["string", "comment"] }, // 其他自动闭合项 ]
这里的notIn参数确保不会在字符串或注释里触发自动闭合,保持逻辑正确。
2. 让st.tmLanguage.json的语法高亮支持大小写不敏感
在TextMate语法规则里,只需要给匹配规则加上"flags": "i"属性就能开启大小写不敏感匹配,不用为每个大小写变体写单独的match规则:
单个关键词的匹配修改
比如原来匹配VAR的规则:
{ "name": "keyword.control.st", "match": "\\bVAR\\b" }
改成:
{ "name": "keyword.control.st", "match": "\\bVAR\\b", "flags": "i" }
批量关键词的匹配优化
如果有一组关键词需要统一设置,可以把它们放到一个正则分组里,再加上flags:
{ "name": "keyword.control.st", "match": "\\b(VAR|END_VAR|IF|END_IF|CASE|END_CASE|FOR|END_FOR)\\b", "flags": "i" }
这样所有括号里的关键词都会忽略大小写进行匹配,同时保持单词边界\b的限制,避免误匹配到包含这些词的标识符(比如不会把VARIABLE当成VAR高亮)。
记得修改后重新加载VS Code的扩展(可以按Ctrl+Shift+P选择"Reload Window"),就能看到配置生效了。
内容的提问来源于stack exchange,提问作者Sergey Romanov
相关产品推荐
相关产品推荐

