我正在使用Sublime Text 2/3在Typescript和Javascript中进行编码。
但是,当对象的键也是有效的关键字名称时,即使只是键,它也会像关键字一样突出显示。
例子:
var test = { do: 'hello world' };
有没有办法不像关键字那样突出显示这种键?
最佳答案
语法高亮显示由tmLanguage文件控制。
在ST3中,这些文件保存在.cache文件中。
因此,请按照下列步骤。
Tools -> Command Pallet
,然后使用“程序包管理器”安装PackageResourceViewer PackageResourceViewer: Open Resource
JavaScript
JavaScript.tmLanguage
现在,将为您显示语言定义文件。
对于您的情况,请搜索
do
,直到找到它位于名为keyword.control.js
的关键字列表中为止 <dict>
<key>match</key>
<string>\b(break|case|catch|continue|default|do|else|finally|for|goto|if|import|package|return|switch|throw|try|while)\b</string>
<key>name</key>
<string>keyword.control.js</string>
</dict>
将字符串
do
标记为JavaScript Control关键字后,该指令将在您为配色方案选择的.tmTheme文件中得到遵守。如果我们以与上述相同的方式使用PackageResourceViewer打开
Amy.tmTheme.cache
文件并搜索control
,我会找到此指令: <dict>
<key>name</key>
<string>Control keyword</string>
<key>scope</key>
<string>keyword.control</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#80A0FF</string>
</dict>
</dict>
也就是说,如果我选择使用
Amy
主题,则当.tmLanguage文件将字符串标识为keyword.control
(控制关键字)时,该主题应应用提供的语法突出显示。那么,这一切告诉我们什么呢?
如果希望始终将字符串
do
设置为而不是作为控制关键字,则需要构建一组新的正则表达式(regex)测试集,而不是JavaScript.tmLanguage中的测试集。如果您可以提出一个新的正则表达式来应用您想要应用的规则,则可以将其添加到.tmLanguage文件中,并突出显示所需的语法。我会强烈建议,建议您先将
JavaScript.tmLanguage
文件保存到User
文件夹中,以便使用和副本进行操作,下次ST3升级时,所做的更改将不会被丢弃。现在开始编辑.tmLanguage文件,直到获得所需的行为。
在我看来,您的新正则表达式应在关键字和而不是标记(如
:
)之后立即查找尾随的keyword.control.js
。敲打自己的想法。如果您将副本保存到User
文件夹中,那么一切都会变得很糟糕,可能是删除.tmLanguage文件并重新启动ST,然后还原到Package
文件夹中的默认.tmLanguage文件。可能发生的最坏情况是您浪费了几个小时。但是,如果您“破解”正确的正则表达式模式,则您将拥有自己的.tmLanguage文件,其中包含您喜欢的语言定义,每种颜色配置都将尊重该定义,并且每天的编码体验中都会消除烦恼,从而给您带来无穷的欢乐。永远是“好东西(TM)”。希望这一切都有道理。大声喊出来,否则,我会努力做得更好。