将光标位置添加到 Sublime Text 3 中的 Snippet

Add cursor position to Snippet in Sublime Text 3

这是我在 Sublime Text 3 中添加片段的代码:

<snippet>
    <content><![CDATA[
document.write();
]]></content>
    <tabTrigger> dw </tabTrigger>
</snippet>

问题是如何在这段代码中添加光标位置? 谢谢。

Sublime 中的片段允许您有选择地指定字段(制表位),允许您以交互方式用额外信息填充片段。

当代码段展开时,您可以 TabShift+Tab 在字段之间来回移动,当您按下Tab 而在最后一个字段中,代码段扩展完成。

它的状态在当前 window 的状态栏中指示,在那里你会看到 Sublime 告诉你你在哪个领域以及有多少,例如Field 1 of 2.

字段用 $ 后跟数字指定,Sublime 按照数字顺序(</code>、然后是 <code> 等)跟在字段后面。出于这个原因,重要的是你在你的代码片段内容中输入任何文字 $ 作为 $ 而不是这样 Sublime 知道它不是一个字段。

话虽如此,字段 [=18=] 是特殊的,它指示当代码段扩展完成时光标最终应该结束的位置。如果 [=18=] 没有出现在代码片段中的任何地方,Sublime 就好像它是代码片段内容中的最后一样。

这就是它在上面的代码片段示例中所做的,所以当代码片段展开时,它会将光标留在代码片段的末尾,就在 ; 字符之后。

下面的代码片段会将光标留在括号内,以便您可以输入要插入到文档中的内容:

<snippet>
    <content><![CDATA[
document.write([=10=]);
]]></content>
    <tabTrigger> dw </tabTrigger>
</snippet>

当这样指定时,片段没有 "real" 字段(只有特殊的 "exit" 字段),所以一旦它展开,光标就在括号内,片段展开是完成。

根据您的用例,您还可以使用如下代码片段实现类似的效果:

<snippet>
    <content><![CDATA[
document.write();[=11=]
]]></content>
    <tabTrigger> dw </tabTrigger>
</snippet>

展开此代码段时,光标像以前一样放在括号内,但现在状态行会告诉您 Field 1 of 2 因为现在有两个字段(您的显式字段和 "exit" 在 [=18=]).

这允许您键入以填写调用 document.write 的值,然后按 Tab 直接跳到行尾。

有关片段的更多信息,我推荐 Unofficial Documentation on Snippets