在Sublime 2/3中更改/添加语言的语法突出显示


94

我想更改/添加Sublime 2/3中一种语言的语法突出显示。

例如,我希望关键字this在JavaScript中着色。

我怎样才能做到这一点?

我知道其中有一个首选项JavaScript文件C:\Program Files\Sublime Text 3\Packages,但是我不知道要更改什么,或者是否必须在此文件夹中的某个位置创建一个新的JavaScript首选项文件%APPDATA%\Sublime Text 3

Answers:


95

语法突出显示由您使用的主题控制,可通过访问Preferences -> Color Scheme。主题通过使用范围来突出显示不同的关键字,函数,变量等,这些范围由.tmLanguage语言目录/包中文件中包含的一系列正则表达式定义。例如,JavaScript.tmLanguage文件分配范围source.jsvariable.language.jsthis关键字。由于Sublime Text 3使用.sublime-packagezip文件格式存储所有默认设置,因此编辑单个文件不是很简单。

不幸的是,并非所有主题都包含所有范围,因此您需要尝试不同的主题才能找到看起来不错的主题,并为您提供所需的突出显示。Sublime Text包含许多主题,而Package Control提供了更多主题,如果您还没有的话,我强烈建议安装。确保遵循ST3指示

碰巧的是,我已经开发了Neon Color Scheme可通过Package Control使用的,您可能想看看。除了试图使多种语言看起来尽可能好外,我的主要目标是要确定尽可能多的不同范围-超出标准主题中的范围。例如,虽然JavaScript语言定义不如Python完整,Neon但与某些默认值(如Monokai或)相比,其多样性仍然要大得多Solarized

jQuery以Neon主题突出显示

我应该注意,我Better JavaScript为该图像使用了@ int3h的语言定义,而不是Sublime 附带的语言定义。可以通过Package Control安装。

更新

最近,我发现了另一个JavaScript替代语言定义- JavaScriptNext - ES6 Syntax。它具有比基本JavaScript甚至更好的JavaScript更大的作用域。在相同的代码上看起来像这样:

下一步

另外,自从我最初编写此答案以来,@ skuroda已PackageResourceViewer通过Package Control 发布。它使您可以无缝地查看,编辑和/或提取部分或整个.sublime-package软件包。因此,如果您选择,则可以直接编辑Sublime随附的配色方案。

另一个更新

随着Github上几乎所有默认软件包的发布,变化迅速而疯狂。旧的JS语法已被完全重写,以包括JavaScript Next ES6语法的最佳部分,现在已尽可能与ES6完全兼容。一的其他变化已对盖边角的情况下,提高一致性,只是整体变得更好。新语法已包含在(当前)最新的dev build 3111中。

如果您想在当前的beta版本 3103中使用任何新语法,只需在某个位置克隆Github存储库,然后将JavaScript(或您想要的任何一种或多种语言)链接到Packages目录中-选择即可在系统上找到它Preferences -> Browse Packages...。然后,只需git pull不时在原始repo目录中执行a 即可刷新所有更改,您就可以享受到最新,最精彩的内容!我应该注意,仓库使用的是新.sublime-syntax格式,而不是旧格式.tmLanguage,因此它们不适用于3084之前的ST3版本或ST2(无论如何,您都应该升级到最新的Beta或dev版本)。

我目前正在调整霓虹灯配色方案,以处理新JS语法中的所有新范围,但大多数内容应该已经涵盖。


我安装了Package Control和您的Better JavaScript。我如何为您设置方案?未在配色方案中列出。
Niklas

您是否也通过Package Control安装了“ Neon Theme”?拥有后,转到Preferences -> Color Scheme -> Neon Theme并选择Neon
MattDMo

1
如果通过Package Control安装软件包,则它们会自动存储在正确的位置(在这种情况下为)%APPDATA%\Sublime Text 3\Installed Packages\Neon Theme.sublime-package。选择上面的菜单选项也会Packages\User\Preferences.sublime-settings自动更新文件。
MattDMo

@MattDMo-哇,这非常彻底。我只是想为类似XML的标记做一些语法颜色和编辑增强。但是在弄清楚如何开始使用超级简单的东西时遇到了一些麻烦。我从哪里可以开始进行逆向工程,或者更好的是,获得了有关从中进行创建的教程。
蒂莫西

1
@ nmz787如果只需要该.sublime-syntax文件,则只需下载并将其复制到~/.config/sublime-text-3/Packages/User。然后,可以在Sublime窗口右下角的语法菜单中使用该菜单,它可以单独使用(将显示为“ SystemVerilog”),也可以位于User子菜单下,具体取决于您的设置。如果需要整个软件包,请确保已正确安装软件包控制,打开命令面板,键入pci,按Enter键,搜索SystemVerilog并按Enter键。您不必重命名任何文件或任何东西-为什么这样做?
MattDMo '16

31

我终于找到了一种自定义给定主题的方法。

转到C:\Program Files\Sublime Text 3\Packages并复制+重命名Color Scheme - Default.sublime-packageColor Scheme - Default.zip。然后解压缩并复制主题,您想要更改为%APPDATA%\Sublime Text 3\Packages\User。(以我为例All Hallow's Eve.tmTheme)。

然后,您可以使用任何文本编辑器将其打开,然后更改/添加一些内容,例如this在JavaScript中进行更改:

<dict>
    <key>name</key>
    <string>Lang Variable</string>
    <key>scope</key>
    <string>variable.language</string>
    <key>settings</key>
    <dict>
        <key>foreground</key>
        <string>#FF0000</string>
    </dict>
</dict>

这会将thisJavaScript文件标记为红色。您可以在下选择主题Preferences -> Color Scheme -> User -> <Your Name>


1
是的,这是笨拙的解决方法,当我们接近Sublime Text 3的崭新世界时,我们都需要习惯。我敢肯定,不久以后会有插件可以更轻松地进行.sublime-package编辑……
MattDMo

9
该插件在这里-它被称为PackageResourceViewer,可以通过Package Control安装。它使处理Sublime Text 3 .sublime-package文件变得更加容易,如果您打算对ST3进行任何类型的自定义,强烈建议您使用它。
MattDMo 2014年

1
您在哪里找到这些规则的参考?
qodeninja 2015年

2
^他们说了什么。同样,我也不明白您在何时/何地在代码中“选择”“ this”关键字,为什么这只会为“ this”关键字着色。你能解释一下吗?
Zelphir Kaltstahl '16


16

使用通过Package Control安装的PackageResourceViewer插件(如MattDMo所述)。这样,您只需在Sublime Text中打开压缩资源并保存文件,即可覆盖压缩资源。它会自动仅将已编辑的资源保存到%APPDATA%/ Roaming / Sublime Text 3 / Packages /或〜/ .config / sublime-text-3 / Packages /。

特定于op的插件安装完成后,执行PackageResourceViewer: Open Resource命令。然后选择JavaScript,然后选择JavaScript.tmLanguage。这将在编辑器中打开一个xml文件。您可以编辑任何语言定义并保存文件。这将在用户目录中写入JavaScript.tmLanguage文件的替代副本。

可以使用相同的方法来编辑系统中任何语言的语言定义。


我看不到任何有关颜色的信息。但是,您的答案最接近我的需要。相反,我根据此SublimeText论坛帖子编辑了Monokai.tmTheme,以使JSON语法突出显示。
jmort253 2014年

1
此答案中的特定说明用于编辑语言定义。尽管这不能让您直接编辑配色方案的颜色,但可以让您更改找到某些类型的范围的方式,从而更改配色方案如何解释(和着色)语言。该插件将在Sublime中打开任何类型的资源,因此您可以使用相同的工具直接类似地编辑配色方案。例如,我喜欢Tomorrow Night的配色方案,因此可以使用此插件打开Tomorrow-Night.tmTheme来编辑该配色方案。
chawkinsuf 2014年

5

“ this”已在Javascript中着色。

查看->语法->,然后选择要突出显示的语言。


我一直在寻找:用C ++语法着色View -> Syntax -> Open all with current extension as...设置*.stan文件。
BoltzmannBrain,

0

这是我的食谱

注意:这并不是OP的要求。这些说明将帮助您更改已定义语法匹配规则的项目(注释,关键字等)的颜色。例如,使用这些指令进行更改,以便所有代码注释都用蓝色而不是绿色着色。

我相信OP正在询问如何this在JavaScript源文件中找到时将其定义为要着色的项目。

  1. 安装软件包:PackageResourceViewer

  2. Ctrl+Shift+P> [ PackageResourceViewer: Open Resource]> [ Color Scheme - Default]> [ Marina.sublime-color-scheme](或您使用的任何配色方案)

  3. 上面的命令将打开“ Marina.sublime-color-scheme” 文件的新标签。

    • 对于我来说,该文件位于我的漫游配置文件%appdata%C:\Users\walter\AppData\Roaming\Sublime Text 3\Packages\Color Scheme - Default\)中。
    • 但是,如果我在Windows资源管理器中浏览到该路径,则[ Color Scheme - Default]不是[ Packages] dir的子目录。我怀疑PackageResourceViewer正在做一些虚拟化。

可选步骤:在新的颜色方案选项卡上:Ctrl+Shift+P> [ Set Syntax: JSON]

  1. 搜索您要更改的规则。我想使评论可见,所以我搜索了“ Comment

    • 我在本"rules"节中找到了它
 "rules":
    [
        {
            "name": "Comment",
            "scope": "comment, punctuation.definition.comment",
            "foreground": "var(blue6)"
        },
  1. 搜索字符串"blue6":以找到颜色变量定义部分。我在本"variables"节中找到了它。

  2. 使用http://hslpicker.com/之类的工具选择新颜色。

  3. 定义新的颜色变量,或覆盖的颜色设置blue6

    • 警告:覆盖blue6将影响该颜色方案中的所有其他文本元素,这些颜色元素也使用blue6(“标点符号”“访问器”)。
  4. 保存文件后,更改将立即应用于所有打开的文件/选项卡。

笔记

Sublime将处理所有这些颜色样式。可能更多。

hsla =色相,饱和度,亮度,阿尔法rgba =红色,绿色,蓝色,阿尔法

hsla(151,100%,41%,1)-最后一个参数是Alpha级别(透明度)1 =不透明,0.5 =半透明,0 =全透明

hsl(151,100%,41%)-无Alpha通道

rgba(0,209,108,1)-具有Alpha通道的rgb

rgb(0,209,108)-无Alpha通道

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.