繁体   English   中英

如何添加自动完成的Sublime Text 3

[英]How to add auto-complete Sublime Text 3

我想添加自定义的自动完成键绑定,就像内置的一样:

示例: html+tab自动完成文档类型块。

我尝试添加html自定义键绑定:输入c + o + l + tab以生成<div class="col-">

首选项>按键绑定>默认(OSX).sublime-keymap-用户

{"keys": ["c+o+l+tab"], "command": "insert_snippet", "args": {"contents": "<div class=\\"col-$0\\">"}},
但是,有两个问题:

  1. 新的键绑定将覆盖所有其他自动完成
  2. 初始颜色或字符仍保留在生成的标签的前面。 col<div class="col-">

添加这种类型的键绑定的正确方法是什么?

进行此类操作的正确方法是使用摘要补全 尽管存在一些差异,但总的来说,它们最终都以相同的方式工作,您选择哪种取决于您要创建多少个这样的项目以及您想要它们多么复杂。

使用代码段,您可以从菜单中选择“ Tools > Developer > New Snippet... ”并填写代码段模板,然后将其另存为Sublime默认的位置(这是您的User包)中的sublime-snippet文件。

例如,根据您问题中的示例,这可能看起来像以下内容:

<snippet>
    <content><![CDATA[
<div class="col-$0">
]]></content>
    <description>Insert DIV with column class</description>
    <tabTrigger>col</tabTrigger>
    <scope>text.html</scope>
</snippet>

代码段是XML格式的, ![CDATA[]]之间的所有内容都插入到缓冲区中(即使您认为不需要它也不要删除CDATA如果这样做,Sublime将忽略该代码段​​)。

tabTrigger指定要作为代码段触发器的文本, scope说明该代码段应触发的文件类型,并且description将显示在自动完成面板中代码段的旁边。

在代码段中, tabTriggerscopedescription都是可选的。 如果未指定tabTrigger ,则只能从命令面板或通过insert_snippet命令(例如,在键绑定中)扩展代码段。 如果没有scope的片段应用无处不在,并没有description它在面板中没有说明。

如果您要添加许多代码片段,则也可以使用补全。 这些文件存储在JSON文件中,扩展名为sublime-completions ,应保存在您的User包中(如果不知道在哪里,请使用Preferences > Browse Packages... )。

此类文件的示例为:

{
    "scope": "text.html",

    "completions": [
        { "trigger": "col\tInsert DIV with column class", "contents": "<div class=\"col-$0\">" },
    ]
}

在这种格式下, trigger始终是要触发的文本,并且描述(仍然是可选的)与触发器之间的关系由trigger键中的\\t字符分隔。

在完成中,您仅在顶部指定一次范围,而不是每次都指定范围,但是在完成和摘要之间存在一些功能差异。

  1. 每个sublime-snippet文件只能有一个代码sublime-snippet ,但是sublime-completions文件可以在一个文件中包含许多sublime-completions completions键是一个数组,因此您可以在同一文件中放置多个补全。

  2. 补全是JSON,因此很难输入多行内容或包含JSON特定字符(例如"字符)的内容;对于较短的序列,补全效果更好,而对于较复杂的内容,摘录效果更好。

  3. 当自动完成触发,如果有一个completionsnippet可能被自动完成, snipptets总是“赢”和插入,而完井周期。 这意味着,例如在此特定示例中,您需要按两次Tab键 ,因为col也是标签的名称。

  4. 代码片段会自动显示在命令面板中(应用时),但补全不会出现。 在命令选项板中,代码片段显示为命令,如Snippet: Something ,其中Somethingdescription如果存在),文件名则不存在。

无论哪种情况,都可以通过应用scope使代码段/补全仅适用于某些类型的文件; 要确定适当的范围,请将光标放在文件中的适当位置,然后选择Tools > Developer > Show Scope Name... 您使用的显示范围越多,它变得越具体。 通常,仅需顶层文件(例如text.html ),除非您执行特殊操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM