SublimeText2自定义范围

时间:2012-11-15 15:43:12

标签: sublimetext2

我有许多使用类似代码的不同类型的项目,我的目标是在SublimeText2中制作仅在给定项目上激活的片段和键绑定。

所以,例如,我有jsg1.htmljsg40.html,我也有kwa1.htmlkwa40.html。这两个组中的每一个都有独特的代码,我想为每个组创建不同的片段和键绑定。

这使我想要创建自定义文件类型,例如.kwa.jsg,这样我就可以创建片段/密钥绑定,并将范围设置为这些文件类型。

然而,我无法使其发挥作用。这就是我尝试过的:

a.sublime-片段

<snippet>
<content><![CDATA[
<a href="$1" style="font-family: Segoe UI, Lucida Sans Unicode, Arial;  color:#2f6497; font-size:14px; text-decoration:underline;">$2</a>
]]></content>
<tabTrigger>aj</tabTrigger>
<scope>source.jsg</scope>
</snippet>

jsg.tmLanguage

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>fileTypes</key>
  <array>
    <string>jsg</string>
  </array>
  <key>name</key>
  <string>jsg</string>
  <key>scopeName</key>
  <string>source.jsg</string>
</dict>
</plist>

这两个文件都在我的Packages/User文件夹中。但是,我有一个文件test.jsg,并且该代码段不会在其中激活。

所以问题是:

为使用相同键绑定和片段的HTML文件组创建自定义作用域的最佳方法是什么?是否通过为新文件类型创建自定义语法来创建自定义范围?或者,还有更好的方法?如果这是最好的方式,为什么我的代码段不在我的.jsg文件中?

1 个答案:

答案 0 :(得分:0)

所以我想出来了。要生成自己的密钥绑定和代码段,您需要创建自定义scope。要显示文档的当前范围,可以使用热键:

Ctrl + ⇧ + Alt + P

如果您打开html文件并运行此命令,您会看到它显示text.html。目标是使文件类型突出显示html语法,但显示scope text.we .we其中scope是我们的自定义文件类型(也就是说,它可以是什么我们想要的)。然后,我们可以在密钥绑定和代码段文件中使用html

首先要做的是:我们需要确保我们的自定义文件类型尚未与View - Syntax - Open all with current extension as...相关联。如果您在html下设置了此设置,您最初可能会这样做,以使您的文件类型与JSON具有相同的突出显示。别担心,我们仍然会这样做,但我们必须采取另一种方式。

如果您已经完成,请找到../Path/to/Sublime Text 2/Packages/Users/HTML.sublime-settings文件extensions并从属性Packages中删除您关联的扩展程序。如果您在Windows上找不到User/AppData/Roaming文件夹,则通常隐藏在html

现在我们已经解除了文件的关联,我们必须首先找到使用我们想要的突出显示的语言的设置文件。就我而言,它是../Path/to/Sublime Text 2/Packages/HTML,所以我去了html.tmLanguage。复制文件Comments.tmPreferencesPackages并将其放在Packages/Users/xxx中的任意位置。对于组织,我将它们放在xxxfileTypes是我的自定义文件类型。当我们稍后制作片段时,我还建议您将它们保留在那里,以便与您的文件类型相关的所有内容都在一个地方。

无论如何,根据您的文件类型相应地重命名文件。在文件中,您需要更改三个属性:name(它位于开头),scopescopeName(最后两个位于最后)。相应地替换那些内容。请确保text.___采用scope格式。

更改Comments.tmPreferences文件的html,您可以使用自定义文件类型。它现在将显示scope文件的突出显示,并允许您将其用作片段和密钥绑定中的HTML

此外,如果您的自定义文件是{{1}}个文件,浏览器在打开它们时不会出现任何问题。

完成任务!