【问题标题】:Add cursor position to Snippet in Sublime Text 3在 Sublime Text 3 中将光标位置添加到 Snippet
【发布时间】:2018-02-06 04:12:28
【问题描述】:

这是我在 Sublime Text 3 中添加 sn-p 的代码:

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

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

【问题讨论】:

  • 这里的“光标位置”是什么意思?调用 sn-p 时光标在哪里结束?
  • 没错,像这样:document.write([cursor here]),现在,光标在末尾了。

标签: javascript sublimetext3 sublimetext2 code-snippets


【解决方案1】:

Sublime 中的代码段允许您选择性地指定字段(制表位),以便您以交互方式在 sn-p 中填写额外信息。

当 sn-p 展开时,您可以在字段之间来回 TabShift+Tab,当您按下 Tab kbd> 而在最后一个字段中,sn -p 扩展完成。

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

字段由$ 后跟一个数字指定,Sublime 以数字顺序在字段后面跟随($1,然后是$2,等等)。出于这个原因,在你的 sn-p 内容中输入任何文字 $ 是很重要的,而不是 \$,这样 Sublime 就会知道它不是一个字段。

话虽如此,$0 字段是特殊的,它指示当 sn-p 扩展完成时光标最终应该结束的位置。如果$0 没有出现在 sn-p 中的任何位置,Sublime 就好像它是 sn-p 内容中的最后一件事。

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

如下所示的 sn-p 会将光标留在括号内,以便您可以输入要插入到文档中的内容:

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

当这样指定时,sn-p 没有“真正的”字段(只有特殊的“exit”字段),因此只要它展开,光标就在括号内,并且 sn-p 展开完成。

根据您的用例,您还可以使用 sn-p 实现类似的功能,如下所示:

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

当你展开这个 sn-p 时,光标像以前一样放在括号内,但现在状态行会告诉你 Field 1 of 2 因为现在有两个字段(你的显式字段和 @ 处的“退出” 987654334@).

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

有关 sn-ps 的更多信息,我推荐Unofficial Documentation on Snippets

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多