Sublime Text 2代码片段没有在正确范围内工作

4
我刚刚写了以下片段,并将其保存在文件夹Packages/User/HTML中,命名为"add-script-source.sublime-snippet"。
<snippet>
    <content><![CDATA[
<script type="text/javascript" src="${1:script.js}">${2}</script>
]]></content>
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    <tabTrigger>scriptsrc</tabTrigger>
    <!-- Optional: Set a scope to limit where the snippet will trigger -->
    <scope>text.html</scope>
</snippet>

现在,我只想让这个代码片段在HTML文件中运行,但是它没有。如果我注释掉 "scope" 标签,在JavaScript中它会工作,但是在HTML中仍然不行。我认为你的用户文件夹下的文件夹名称也会给 Sublime Text 适当的范围(如此视频所述https://tutsplus.com/lesson/your-first-snippet/),但这似乎没有任何作用。每当我将 scope 标签设置为 ANYTHING 时,代码片段都不会触发。
可能的问题是什么?

1
你的代码片段在我这里运行良好。你确定你在ST2右下角设置了文件为 HTML 吗? - AGS
也许您与另一个软件包存在冲突。尝试禁用任何与HTML相关的软件包(例如Zen coding),看看会发生什么。 - Pier
好的,看起来它是在工作的,只是有用的Sublime Text自动完成功能似乎没有出现,就像其他语言一样。有人知道这可能是为什么吗? - Aaron Krajeski
1个回答

19

"只有在其他语言中出现过的有用的Sublime Text自动完成没有出现。有人知道为什么吗?"

您需要将此添加到Packages/User/Preferences.sublime-settings文件中。

 "auto_complete_selector": "source, text"

然后在片段文件中给它一个描述:

<snippet>
    <content><![CDATA[
<script type="text/javascript" src="${1:script.js}">${2}</script>
]]></content>
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    <tabTrigger>scriptsrc</tabTrigger>
    <!-- Optional: Set a scope to limit where the snippet will trigger -->
    <scope>text.html</scope>
    <description>scriptsrc</description>
</snippet>

不起作用。在JavaScript中,它会自动从文件名创建描述。我不知道为什么在HTML中会有所不同。 - Aaron Krajeski
在我的帖子中添加了解决方案。 - AGS
这就是答案!现在你能解释一下为什么“源代码 - 注释”不适用于HTML吗? - Aaron Krajeski
@mysteryDate,我不确定,但似乎ST2的默认设置是仅在作用域为source.something时显示自动完成弹出窗口。将该行添加到您的设置文件中可使文本和源代码作用域的弹出窗口出现。 - AGS
谢谢@AGS,非常有帮助。 - rummykhan
谢谢你的回答。我也遇到了同样的问题,如果不是看了你的帖子,我可能永远都想不出来。 - Doug B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接