如何在Visual Studio Code中视觉区分PHP变量的美元符号与变量名?
VS Code 实现PHP美元符号与变量名视觉分隔的方案
独立修改美元符号颜色(原生支持,兼容可变变量多连续$场景)
这个方案不需要安装第三方扩展、不需要修改核心文件,稳定性最高:
- 按快捷键
Ctrl+Shift+P(macOS为Cmd+Shift+P)调出命令面板,输入Preferences: Open User Settings (JSON)回车打开个人配置文件 - 在配置根节点添加如下规则:
// 语义高亮场景下单独匹配$符号 "editor.semanticTokenColorCustomizations": { "enabled": true, "rules": { "variable.php": { "symbolStyle": [ { "match": "^\\$+", "foreground": "#f85149", // 替换为你想要的$符号颜色值 "fontWeight": "bold" // 可选,给$加字重提升区分度 } ] } } }, // 兼容关闭语义高亮场景的TextMate语法匹配 "editor.tokenColorCustomizations": { "textMateRules": [ { "scope": "punctuation.definition.variable.php", "settings": { "foreground": "#f85149", "fontWeight": "bold" } } ] }
- 保存配置后即可生效,普通变量
$user、可变变量$$$callback里的所有连续$符号都会应用独立配色,后续变量名保持原有配色不变。
如果部分场景下$符号没有正确变色,打开开发者工具(顶部菜单「帮助」>「切换开发人员工具」),用元素选择器点选未生效的$,复制其对应的语法scope替换上述规则里的scope值即可。
实现$与变量名的无空格视觉间距
因为VS Code默认PHP语法解析将$识别为变量token的组成部分,而非独立标点,所以无法像Atom一样直接给独立标点加margin实现间距,以下两种方式都可以实现和Atom一致的效果:不会插入实际空格字符,光标移动时可直接从$跳转到变量名,不会在中间空白位置停顿。
- 优先选:字体特性方案(零配置副作用)
选用内置$字符右间距特性的编程字体(比如JetBrains Mono、Fira Code最新版),在配置里开启对应字体特性即可,不需要注入任何自定义代码:
不同字体的间距特性名可能有差异,直接查对应字体的特性说明调整即可,间距大小由字体内置规则控制,显示效果自然。"editor.fontFamily": "'JetBrains Mono', Consolas, monospace", "editor.fontLigatures": "'calt', '$right-space'" - 备选:自定义CSS注入方案(和Atom自定义CSS逻辑完全一致)
安装仍在维护的自定义CSS注入类扩展,注入如下样式规则,利用伪元素给$添加右侧视觉间距:
注入完成后重启VS Code生效,若提示「安装似乎损坏」,选择不再提示即可,不影响任何编辑功能。/* 匹配PHP变量token中的$前缀 */ span[class*="mtk"][style*="punctuation.definition.variable.php"] { margin-right: 3px; /* 调整数值可修改间距大小 */ }
内容的提问来源于stack exchange,提问作者Grzegorz Adam Kowalski
相关产品推荐
相关产品推荐

