使用Sublime Text 2进行语法特定突出显示

Not*_*ent 5 sublimetext

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

例如,假设我在同一个.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>
Run Code Online (Sandbox Code Playgroud)

谢谢!

Jer*_*ell 21

是的,只要标记可以通过已安装的语言定义标识为具有不同的范围,您就可以编辑颜色方案以使用特定颜色和其他样式来定位这些范围.

在packages文件夹中,语言范围在已安装语言的.tmLanguage文件中定义,而样式在"color scheme - default"文件夹中的.tmTheme文件中定义.

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

sublime.set_clipboard(view.syntax_name(view.sel()[0].b))
Run Code Online (Sandbox Code Playgroud)

您可以使用此信息来创建样式,有点像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>
Run Code Online (Sandbox Code Playgroud)

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

  • @NotJustClarkKent:将这个优秀的答案标记为"答案"(通过点击复选标记)是合适的. (4认同)