我想在 Sublime 2/3 中更改/添加语言的语法突出显示。
例如,我想要this
在 JavaScript 中着色的关键字。
我怎样才能做到这一点?
我知道其中有一个偏好 JavaScript 文件C:\Program Files\Sublime Text 3\Packages
,但我不知道要更改什么,或者我是否必须在此文件夹的某处创建一个新的 JavaScript 偏好文件%APPDATA%\Sublime Text 3
。
我想在 Sublime 2/3 中更改/添加语言的语法突出显示。
例如,我想要this
在 JavaScript 中着色的关键字。
我怎样才能做到这一点?
我知道其中有一个偏好 JavaScript 文件C:\Program Files\Sublime Text 3\Packages
,但我不知道要更改什么,或者我是否必须在此文件夹的某处创建一个新的 JavaScript 偏好文件%APPDATA%\Sublime Text 3
。
语法突出显示由您使用的主题控制,可通过Preferences -> Color Scheme
. .tmLanguage
主题通过使用范围来突出显示不同的关键字、函数、变量等,范围由语言目录/包中的文件中包含的一系列正则表达式定义。例如,JavaScript.tmLanguage
文件将范围source.js
和关键字分配variable.language.js
给this
关键字。由于 Sublime Text 3 使用.sublime-package
zip 文件格式来存储所有默认设置,因此编辑单个文件并不是很简单。
不幸的是,并非所有主题都包含所有范围,因此您需要尝试不同的主题才能找到看起来不错的主题,并为您提供所需的突出显示。Sublime Text 中包含许多主题,并且可以通过Package Control获得更多主题,如果您还没有安装,我强烈建议您安装。确保您遵循ST3 的指示。
碰巧的是,我开发了Neon Color Scheme
可以通过 Package Control 获得的 ,您可能想看看。我的主要目标,除了试图使广泛的语言看起来尽可能好之外,是尽可能多地识别不同的范围——比标准主题中包含的范围要多得多。例如,虽然 JavaScript 语言的定义不如 Python 的那么全面,Neon
但仍然比某些默认值(如Monokai
或Solarized
.
我应该注意,我Better JavaScript
为这张图片使用了@int3h 的语言定义,而不是 Sublime 附带的语言定义。它可以通过包控制安装。
更新
最近我发现了另一种 JavaScript 替代语言定义 - JavaScriptNext - ES6 Syntax
. 它比基础 JavaScript 甚至更好的 JavaScript 拥有更多的作用域。在相同的代码上看起来像这样:
此外,由于我最初写了这个答案,@skuroda 已经PackageResourceViewer
通过包控制发布。它允许您无缝地查看、编辑和/或提取部分或整个.sublime-package
包。因此,如果您选择,您可以直接编辑 Sublime 包含的配色方案。
另一个更新
随着Github上几乎所有默认软件包的发布,变化迅速而激烈。旧的 JS 语法已被完全重写,以包含 JavaScript Next ES6 语法的最佳部分,现在尽可能完全兼容 ES6。已经进行了大量其他更改以涵盖角落和边缘情况,提高一致性,并使其整体变得更好。新语法已包含在(此时)最新的开发版本3111 中。
如果您想在当前beta 版本3103 中使用任何新语法,只需在某个地方克隆 Github 存储库并将JavaScript
(或您想要的任何语言)链接到您的Packages
目录 - 通过选择在您的系统上找到它Preferences -> Browse Packages...
。然后,只需git pull
在原始 repo 目录中不时刷新任何更改,即可享受最新最好的!我应该注意,repo 使用新.sublime-syntax
格式而不是旧格式.tmLanguage
,因此它们不适用于 3084 之前的 ST3 版本或 ST2(在这两种情况下,您都应该升级到最新的 beta 或 dev 版本)。
我目前正在调整我的 Neon 颜色方案以处理新 JS 语法中的所有新范围,但大多数应该已经涵盖。
我终于找到了一种自定义给定主题的方法。
转到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
)。
然后您可以使用任何文本编辑器打开它并更改/添加一些内容,例如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>
这将this
在 JavaScript 文件中标记为红色。您可以在 下选择您的主题Preferences -> Color Scheme -> User -> <Your Name>
。
使用通过 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 文件的覆盖副本。
可以使用相同的方法来编辑系统中任何语言的语言定义。
“this”已经在 Javascript 中着色。
查看-> 语法-> 并选择要突出显示的语言。
注意:这并不是 OP 所要求的。这些说明将帮助您更改定义语法匹配规则的项目(注释、关键字等)的颜色。例如,使用这些指令进行更改,使所有代码注释都变为蓝色而不是绿色。
我相信 OP 正在询问如何定义this
为在 JavaScript 源文件中找到时要着色的项目。
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 通道