6

我想知道是否有一种方法可以为同一文件中的不同语言标签提供两种不同的标签颜色(美国的“颜色”)。

例如,假设我在同一个 .cfm 文件中有 ColdFusion 代码和 HTML 代码。我可以将 ColdFusion 标签设为红色,将 HTML 标签设为蓝色吗?

例如,让我们调用下面的文件HelloWorld.cfm - 我可以为标签着色不同吗?

<cfset myvar = "hello, world" />
<html>
<head>
  <title>This is my title</title>
</head>
<body>

<div><cfoutput>#myvar#</cfoutput></div>

</body>
</html>

谢谢!

4

2 回答 2

22

是的,只要可以通过您安装的语言定义将标签识别为具有不同的范围,您就可以编辑您的配色方案以针对具有特定颜色和其他样式的这些范围。

在您的包文件夹中,语言范围在 .tmLanguage 文件中为您安装的语言定义,而样式在“颜色方案 - 默认”文件夹中的 .tmTheme 文件中定义。

如果您将光标放在标签内,然后按shift+ ctrl+ alt+ p(我认为在 OSX 中为shift- cmd-p)状态栏将显示当前范围。您还可以使用以下命令通过控制台将其复制到剪贴板:

sublime.set_clipboard(view.syntax_name(view.sel()[0].b))

您可以使用这些信息来创建您的样式,有点像 css 选择器,但使用的是 XML。例如,我使用这个Coldfusion 包,并且在我的自定义 .tmTheme 文件中有如下所示的范围选择器来区分 cf 标签和 HTML 标签。

<dict>
    <key>name</key>
    <string>Tag name</string>
    <key>scope</key>
    <string>entity.name.tag</string>
    <key>settings</key>
    <dict>
        <key>background</key>
        <string>#D8D0B6</string>
        <key>fontStyle</key>
        <string>bold</string>
        <key>foreground</key>
        <string>#647A4F</string>
    </dict>
</dict>
<dict>
    <key>name</key>
    <string>CF tag name</string>
    <key>scope</key>
    <string>entity.name.tag.conditional.cfml, entity.name.tag.declaration.cfml, entity.name.tag.other, entity.name.tag.cf, entity.name.tag.inline.other.cfml</string>
    <key>settings</key>
    <dict>
        <key>background</key>
        <string>#D8D0B6</string>
        <key>fontStyle</key>
        <string>bold</string>
        <key>foreground</key>
        <string>#990033</string>
    </dict>
</dict>

有关范围选择器的更多信息。

于 2012-02-19T11:08:26.640 回答
4

我已经更新了,ColdFusion.tmLanguage因此您只需要针对entity.name.tag.cf所有 cf 标签着色。您还可以分别定位特定标签,例如entity.name.tag.cf.scriptentity.name.tag.cf.queryforcfscriptcfquery。高温高压

于 2012-02-20T04:08:46.510 回答