我想在Sublime 2/3中更改/添加语言突出显示。
例如,我希望JavaScript中的关键字this
为彩色。
我该怎么做?
我知道C:\Program Files\Sublime Text 3\Packages
中存在首选JavaScript文件,但我不知道要更改什么,或者我是否必须在此文件夹%APPDATA%\Sublime Text 3
中的某处创建新的JavaScript首选项文件。< / p>
答案 0 :(得分:92)
语法突出显示由您使用的主题控制,可通过 Preferences -> Color Scheme
访问。主题通过使用范围突出显示不同的关键字,函数,变量等,范围由语言目录/包中.tmLanguage
文件中包含的一系列正则表达式定义。例如,JavaScript.tmLanguage
文件会将范围source.js
和variable.language.js
分配给 this
关键字。由于Sublime Text 3使用.sublime-package
zip文件格式来存储所有默认设置,因此编辑单个文件并不是非常简单。
不幸的是,并非所有主题都包含所有范围,因此您需要使用不同的主题来找到一个看起来不错的主题,并为您提供您正在寻找的突出显示。 Sublime Text中包含许多主题,还有更多主题可通过Package Control获得,如果您还没有,我 高度 建议安装。请务必遵循ST3 directions。
正如它所发生的那样,我开发了Neon Color Scheme
,可通过Package Control获得,您可能需要查看。我的主要目标是尽量使各种语言看起来尽可能好,但我要尽可能多地确定不同的范围 - 比标准主题中包含的更多。虽然JavaScript语言定义不像Python那样彻底,但Neon
仍然比Monokai
或Solarized
等一些默认值具有更多的多样性。
我应该注意到我使用了@ int3h的Better JavaScript
语言定义来代替Sublime附带的语言定义。它可以通过Package Control安装。
<强>更新强>
最近我发现了另一种JavaScript替代语言定义 - JavaScriptNext - ES6 Syntax
。它比基础JavaScript甚至更好的JavaScript具有更多的范围。它在相同的代码上看起来像这样:
此外,由于我最初写了这个答案,@ skuroda已经通过Package Control发布了PackageResourceViewer
。它允许您无缝地查看,编辑和/或提取部分或整个.sublime-package
包。因此,如果您选择,您可以直接编辑Sublime中包含的配色方案。
另一个更新
随着几乎所有默认软件包on Github的发布,变化已经快速而且激烈地发生。旧的JS语法已被完全重写,以包含JavaScript Next ES6语法的最佳部分,现在可以完全兼容ES6。已经进行了 ton 的其他更改以涵盖角落和边缘情况,提高一致性,并且总体上使其更好。新语法已包含在(此时)最新dev build 3111。
中如果您想使用当前beta build 3103的任何新语法,只需在某处克隆Github repo并将JavaScript
(或您想要的任何语言)链接到您的Packages
目录 - 选择 Preferences -> Browse Packages...
,在系统中找到它。然后,只需在原始repo目录中执行git pull
即可刷新任何更改,您就可以享受最新最好的!我应该注意,repo使用新的.sublime-syntax
格式而不是旧的.tmLanguage
格式,因此它们不适用于3084之前的ST3版本,或者使用ST2(在这两种情况下,您都应该升级无论如何最新的测试版或开发版。)
我目前正在调整我的霓虹色方案来处理新JS语法中的所有新范围,但大多数应该已经涵盖。
答案 1 :(得分:29)
我终于找到了一种定制给定主题的方法。
转到C:\Program Files\Sublime Text 3\Packages
并将Color Scheme - Default.sublime-package
复制+重命名为Color Scheme - Default.zip
。然后解压缩并复制主题,您想要更改为%APPDATA%\Sublime Text 3\Packages\User
。 (就我而言,All Hallow's Eve.tmTheme
)。
然后您可以使用任何文本编辑器打开它并更改/添加内容,例如在JavaScript中更改this
:
<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>
这会将JavaScript文件中的this
标记为红色。您可以在Preferences -> Color Scheme -> User -> <Your Name>
下选择主题。
答案 2 :(得分:13)
使用通过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文件的覆盖副本。
可以使用相同的方法编辑系统中任何语言的语言定义。
答案 3 :(得分:4)
“这个”已经在Javascript中着色。
视图 - &GT; Syntax-&GT;并选择要突出显示的语言。
答案 4 :(得分:0)
注意:这并不是OP的要求。这些说明将帮助您更改已定义语法匹配规则的项目(注释,关键字等)的颜色。例如,使用这些说明进行更改,以使所有代码注释都变为蓝色,而不是绿色。
我相信OP正在询问如何将this
定义为在JavaScript源文件中找到的要着色的项目。
安装软件包:PackageResourceViewer
Ctrl+Shift+P
> [PackageResourceViewer: Open Resource
]> [Color Scheme - Default
]> [Marina.sublime-color-scheme
](或您使用的任何配色方案)
上面的命令将打开一个新的选项卡,指向文件“ Marina.sublime-color-scheme
”。
%appdata%
(C:\Users\walter\AppData\Roaming\Sublime Text 3\Packages\Color Scheme - Default\
)中。 Color Scheme - Default
的子目录不是[Packages
]子目录。我怀疑PackageResourceViewer
正在做一些虚拟化。 可选步骤:在新的颜色方案标签上:Ctrl+Shift+P
> [Set Syntax: JSON
]
搜索要更改的规则。我想让评论可见,所以我搜索了“ Comment
”
"rules"
部分中找到了它 "rules":
[
{
"name": "Comment",
"scope": "comment, punctuation.definition.comment",
"foreground": "var(blue6)"
},
搜索字符串"blue6":
以找到颜色变量定义部分。我在"variables"
部分中找到了它。
使用http://hslpicker.com/之类的工具选择新颜色。
要么定义一个新的颜色变量,要么覆盖blue6
的颜色设置。
blue6
将影响该颜色方案中的所有其他文本元素,这些颜色元素也使用blue6(“标点符号”“访问器”)。保存文件,所做的更改将立即应用于所有打开的文件/标签。
Sublime将处理所有这些颜色样式。可能更多。
hsla =色相,饱和度,亮度,alpha rgba =红色,绿色,蓝色,alpha
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通道