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

IST*_*ech 2 javascript code-snippets sublimetext2 sublimetext3

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

<snippet>
    <content><![CDATA[
document.write();
]]></content>
    <tabTrigger> dw </tabTrigger>
</snippet>
Run Code Online (Sandbox Code Playgroud)

问题是如何在此代码中添加光标位置?谢谢.

Oda*_*urd 14

Sublime中的代码段允许您选择性地指定字段(制表位),这些字段允许您以交互方式使用额外信息填充代码段.

当片断扩展你能够TabShift+Tab场之间来回,而当你按下Tab而在最后一个字段,该代码段扩建完成.

状态栏显示在当前窗口的状态栏中,您将看到Sublime告诉您您所在的字段以及有多少字段,例如Field 1 of 2.

使用$后跟数字指定字段,Sublime按照数字顺序($1,然后$2等)跟踪字段.因此,您需要$在代码段内容中输入任何文字,\$以便Sublime知道它不是字段.

话虽如此,该字段$0是特殊的,表示当代码片段扩展完成时光标最终应该结束的位置.如果$0片段中没有出现任何内容,则Sublime就像片段内容中的最后一样.

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

如下所示的代码段会将光标留在paranthesis中,以便您可以输入要插入到文档中的内容:

<snippet>
    <content><![CDATA[
document.write($0);
]]></content>
    <tabTrigger> dw </tabTrigger>
</snippet>
Run Code Online (Sandbox Code Playgroud)

当像这样指定时,代码段没有"真实"字段(只是特殊的"退出"字段),因此只要它展开,光标就会在括号内,代码片段扩展完成.

根据您的使用情况,您还可以使用这样的代码段实现类似的功能:

<snippet>
    <content><![CDATA[
document.write($1);$0
]]></content>
    <tabTrigger> dw </tabTrigger>
</snippet>
Run Code Online (Sandbox Code Playgroud)

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

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

有关代码段的更多信息,我建议使用代码段上非官方文档.