我有许多使用类似代码的不同类型的项目,我的目标是在SublimeText2中创建仅在给定项目上激活的代码片段和键绑定。
例如,我通过jsg40.html使用jsg1.html,也通过kwa40.html使用kwa1.html。这两个组中的每个组都有唯一的代码,我想为每个组创建不同的代码片段和键绑定。
这导致我想要创建自定义文件类型,如.kwa和.jsg,这样我就可以创建范围设置为这些文件类型的代码段/键绑定。
然而,我不能让它工作。这是我尝试过的:
a.sublime-snippet
<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文件中不起作用?
发布于 2012-11-22 01:35:39
所以我想通了。要生成您自己的键绑定和代码片段,您需要创建一个自定义的scope。要显示文档的当前范围,可以使用热键:
Ctrl + ⇧ + Alt + P
如果您打开一个html文件并运行此命令,您应该会看到它显示text.html。我们的目标是创建一个像html语法一样突出显示的文件类型,同时显示text.we的scope,其中.we是我们的自定义文件类型(也就是说,它可以是我们想要的任何文件类型)。然后,我们可以在键绑定和代码片段文件中使用该scope。
首先要做的是:我们需要确保我们的自定义文件类型还没有与html关联。如果您在View - Syntax - Open all with current extension as...下设置了该设置,则会发生这种情况,您最初可能会这样做,以使您的文件类型具有与html相同的高亮显示效果。别担心,我们还是会这么做的,但我们必须换一种方式来做。
如果已执行此操作,请找到JSON文件../Path/to/Sublime Text 2/Packages/Users/HTML.sublime-settings,然后从属性编辑器中删除关联的扩展名。如果你在Windows上找不到Packages文件夹,它通常隐藏在User/AppData/Roaming中。
因此,现在我们已经解除了文件的关联,我们必须首先找到使用我们想要的突出显示的语言的设置文件。在我的例子中,它是html,所以我选择了../Path/to/Sublime Text 2/Packages/HTML。复制文件html.tmLanguage和Comments.tmPreferences并将它们放入Packages中的任何位置。对于组织,我将它们放在Packages/Users/xxx中,其中xxx是我的自定义文件类型。当我们稍后制作代码片段时,我还会建议您将它们保留在那里,以便与您的文件类型相关的所有内容都放在一个地方。
无论如何,请根据您的文件类型相应地重命名这些文件。在文件中,您需要更改三个属性:fileTypes (在开头)、name和scope (最后两个在最后)。相应地替换这些内容。确保scopeName采用text.___形式。
更改Comments.tmPreferences文件的scope,就可以使用您的自定义文件类型了。它现在将显示html文件的高亮显示,并允许您在代码片段和键绑定中将其用作scope。
此外,如果您的自定义文件是HTML文件,当您打开它们时,浏览器显示它们将不会有任何问题。
任务完成!
https://stackoverflow.com/questions/13401012
复制相似问题