2012-11-15 78 views
1

我有许多不同类型的项目使用类似的代码,我的目标是在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文件中工作?

回答

0

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

Ctrl + ⇧ + Alt + P

如果打开html文件并运行此命令,你应该看到它显示text.html。我们的目标是制作一个文件类型,其高亮显示为html语法,但显示的scope,其中.we是我们的自定义文件类型(也就是说,它可以是我们想要的任何内容)。然后,我们可以在我们的键绑定和片段文件中使用该scope

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

如果您已经完成了此操作,请找到JSON文件../Path/to/Sublime Text 2/Packages/Users/HTML.sublime-settings,并从属性extensions中删除您关联的扩展名。如果您在Windows上找到Packages文件夹时遇到问题,通常会将其隐藏在User/AppData/Roaming中。

因此,现在我们已经解开了我们的文件,我们必须首先找到使用我们想要的突出显示的语言的设置文件。在我的情况下,它是html,所以我去了../Path/to/Sublime Text 2/Packages/HTML。将文件html.tmLanguageComments.tmPreferences复制并放在Packages的任何位置。对于组织,我将它们放入Packages/Users/xxx,其中xxx是我的自定义文件类型。当我们稍后创建片段时,我还会建议您将它们保留在那里,以便与您的文件类型相关的所有内容都位于同一位置。

无论如何,根据您的文件类型对文件进行相应的重命名。在文件中,您需要更改三个属性:fileTypes(位于开头),namescope(后两位属于最后)。相应地替换这些内容。请确保scopeName的格式为text.___

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

此外,如果您的自定义文件是HTML文件,浏览器在打开它们时不会显示任何问题。

任务完成!