我最近在Stack overflow - How to add custom auto completion in Sublime Text 3?和sublime User Echo也问过类似的问题。
这个问题可以通过下面的实现轻松解决。 (但我的问题并没有完全通过这种方法解决。)下面的方法是针对我自己的问题的。但是你可以很容易地弄清楚如何改变它。
实现这些自动完成的最简单方法是在Sublime Text Build 3059 x64\Data\Packages\User 文件夹中创建HTML.sublime-completions 文件。 (由于我在 Windows 操作系统中使用的是便携版 ST3,因此安装 ST3 时文件夹可能会有所不同。)使用 JSON 文本填充文件,如
{
"scope": "text.html - source - meta.tag, punctuation.definition.tag.begin",
"completions":
[
{ "trigger": "eq", "contents": "<eq>$1</eq>" },
{ "trigger": "eqq", "contents": "<eqq>\n\t$1\n</eqq>" }
]
}
。但tab 触发未启用,虽然我的Preferences - Settings - User 包含标签相关的功能,如
{
[
"Vintage",
"BracketHighlighter",
"SideBarEnhancements"
],
"tab_completion": true,
"tab_size": 2,
"translate_tabs_to_spaces": false,
"use_tab_stops": false,
}
。在这种情况下,仅启用Ctrl+tab 触发。怎么了?我不知道。
为了解决这些问题,我尝试了 Snippets,在 Sublime Text Build 3059 x64\Data\Packages\User 文件夹中制作了 HTML.sublime-snippet 文件。我放了
<snippet>
<content><![CDATA[<eqq>
$0$1
</eqq>]]></content>
<tabTrigger>eqq</tabTrigger>
<scope>text.html</scope>
</snippet>
<snippet>
<content><![CDATA[<eq>$1$0</eq>]]></content>
<tabTrigger>eq</tabTrigger>
<scope>text.html</scope>
</snippet>
。在这种情况下,仅启用第一个 <snippet>。所以我分别保存了多个sn-p文件。
<snippet>
<content><![CDATA[<eq>$0</eq>]]></content>
<tabTrigger>eq</tabTrigger>
<scope>text.html</scope>
<description>eq tag to be rendered by MathJax</description>
</snippet>
在eq.sublime-snippet 文件中,并且
<snippet>
<content><![CDATA[<eq>$1$0</eq>]]></content>
<tabTrigger>eq{$PARAM1}</tabTrigger>
<scope>text.html</scope>
<description>eq{inline TeX equation} tag to be rendered by MathJax</description>
</snippet>
在eqBraces.sublime-snippet 文件中,并且
<snippet>
<content><![CDATA[<eqq>
$0
</eqq>]]></content>
<tabTrigger>eqq</tabTrigger>
<scope>text.html</scope>
<description>eqq tag to be rendered by MathJax</description>
</snippet>
在eqq.sublime-snippet 文件中,并且
<snippet>
<content><![CDATA[<eqq>
$1$0
</eqq>]]></content>
<tabTrigger>eqq{$PARAM1}</tabTrigger>
<scope>text.html</scope>
<description>eqq{outline TeX equations} tag to be rendered by MathJax</description>
</snippet>
在eqqBraces.sublime-snippet 文件中。但是这些也不能完全解决我的问题。
我尝试了类似${1/\\/\/} 的方法。但这也不起作用。像eq{\\alpha \\beta \\gamma} 这样使用双\ 不舒服,我可以解决意外的转义\ 问题。