首页 > 解决方案 > Sublime Text 3 中是否有任何功能蓝图/自动完成功能?

问题描述

我正在寻找基本上可以在崇高文本中绘制功能的东西。

示例:在 JavaScript 中编码时,您可以键入fun,然后会显示一个弹出窗口。

在此处输入图像描述

按下回车键将生成此功能蓝图:

在此处输入图像描述

很方便,很明显。我正在寻找可以做完全相同的事情,但对于自定义功能。例如,对于这个函数:

function asynchFunction(callback) {
  // doStuff
  callback(arguments);
}

asynchFunction当我输入(或部分输入)并在弹出窗口中按 Enter时,我希望出现以下蓝图:

asynchFunction(function(arguments) {

});

Sublime Text 3 是否存在类似的东西?

标签: sublimetext3

解决方案


您正在寻找的是一个片段。您在问题中描述的是默认 JavaScript 包中随 Sublime 一起提供的一个,但您可以根据需要添加自己的。

要使用您提到的内容进行设置,您可以Tools > Developer > New Snippet...从菜单中选择创建一个存根片段,然后相应地对其进行修改。

对于您的示例,结果将如下所示:

<snippet>
    <content><![CDATA[
asynchFunction(function(${1:arguments}) {
    ${0:// body...}
});
]]></content>
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    <tabTrigger>asyncFunction</tabTrigger>
    <!-- Optional: Set a scope to limit where the snippet will trigger -->
    <scope>source.js</scope>
    <description>Async Function</description>
</snippet>

是触发片段的tabTrigger文本,是自动完成弹出窗口中文本的第一部分。在description弹出窗口中也使用 来描述片段的用途,为您提供一些上下文。

( scopehere source.js) 确定片段在哪些文件中可用。如果您不使用它,该代码段将在任何地方都可用,因此这会将其设置为仅出现在 JavaScript 源代码中。

进行更改(如果有)后,将文件保存在 Sublime 默认的位置(您的User包),并带有一些描述性名称和扩展名sublime-snippet,您应该一切顺利。

保存片段后,它会在必要时自动开始出现,包括作为Snippet:命令出现在命令面板中,包括当您Tools > Snippet...从菜单中选择时。

有关片段本身的更多详细信息,请参阅上面的链接文档,但简而言之:

  • 像这样${1:text}的项目fields; text是字段的默认文本,并按Tab数字顺序在字段之间跳过,从 开始1。片段中可以出现多个具有相同字段编号的项目;在您编辑该字段时,它们会立即更改。
  • ${0}字段是特殊的,它指示当您浏览所有字段时光标应该结束的位置。如果片段内容不存在,则默认为片段内容的结尾。
  • 由于上述原因,该$字符在片段正文中是特殊的;如果要$在片段中插入文字字符,请\$改用。
  • 无论您认为多么不需要它,都不要删除![CDATA[and ]]>文本。

推荐阅读