[英]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\\">"}},
但是,有两个问题:
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
将显示在自动完成面板中代码段的旁边。
在代码段中, tabTrigger
, scope
和description
都是可选的。 如果未指定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
字符分隔。
在完成中,您仅在顶部指定一次范围,而不是每次都指定范围,但是在完成和摘要之间存在一些功能差异。
每个sublime-snippet
文件只能有一个代码sublime-snippet
,但是sublime-completions
文件可以在一个文件中包含许多sublime-completions
。 completions
键是一个数组,因此您可以在同一文件中放置多个补全。
补全是JSON,因此很难输入多行内容或包含JSON特定字符(例如"
字符)的内容;对于较短的序列,补全效果更好,而对于较复杂的内容,摘录效果更好。
当自动完成触发,如果有一个completion
和snippet
可能被自动完成, snipptets
总是“赢”和插入,而完井周期。 这意味着,例如在此特定示例中,您需要按两次Tab键 ,因为col
也是标签的名称。
代码片段会自动显示在命令面板中(应用时),但补全不会出现。 在命令选项板中,代码片段显示为命令,如Snippet: Something
,其中Something
是description
如果存在),文件名则不存在。
无论哪种情况,都可以通过应用scope
使代码段/补全仅适用于某些类型的文件; 要确定适当的范围,请将光标放在文件中的适当位置,然后选择Tools > Developer > Show Scope Name...
; 您使用的显示范围越多,它变得越具体。 通常,仅需顶层文件(例如text.html
),除非您执行特殊操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.