Sublime Text 在自动完成后输入 space
Sublime Text enter space after autocomplete
我如何为 HTML 语言编写自定义键绑定或插件,以便在标签后添加 enter
?
例子
目前 Sublime Text 在自动完成时执行此操作
<table></table>
我想要这个
<table>
</table>
希望大家帮帮忙。提前致谢:)
这些片段完成被硬编码在 HTML 包中。
我认为最简单的存档方法是自己编写一个简单的插件。为此,请打开您的 User
文件夹(或 Packages 的其他子文件夹)并创建一个 python 文件(例如 html_complete_tag.py
)。
然后打开python文件,粘贴以下代码即可:
import sublime, sublime_plugin
class HtmlCompleteTagCommand(sublime_plugin.TextCommand):
def run(self, edit):
view = self.view
view.run_command("commit_completion")
for sel in view.sel():
if not sel.empty(): continue
pos = sel.begin()
# check we are inside a tag
if view.substr(sublime.Region(pos-1, pos+1)) == "><":
# we have: <tag>|<tag/>
# insert \n< one position after the cursor
# => <tag>|<\n<tag/>
view.insert(edit, pos+1, "\n<")
# remove the char after the cursor
# => <tag>|\n<tag/>
view.replace(edit, sublime.Region(pos, pos+1), "")
# insert a newline and a tab at the cursor
# => <tag>\n\t|\n<tag/>
view.insert(edit, pos, "\n\t")
这将提交完成,如果在标记内插入换行符。动作有点奇怪,因为我们希望光标在插入 \n\t\n
.
后位于所需的位置
要使用 html 中的键绑定,只需将以下行添加到您的键映射中:
{ "keys": ["tab"], "command": "html_complete_tag", "context":
[
{ "key": "auto_complete_visible" },
{ "key": "selector", "operator": "equal", "operand": "text.html" }
]
},
如果您使用 enter
确认自动完成,则将 tab
替换为 enter
或保留两个键绑定。
我如何为 HTML 语言编写自定义键绑定或插件,以便在标签后添加 enter
?
例子
目前 Sublime Text 在自动完成时执行此操作
<table></table>
我想要这个
<table>
</table>
希望大家帮帮忙。提前致谢:)
这些片段完成被硬编码在 HTML 包中。
我认为最简单的存档方法是自己编写一个简单的插件。为此,请打开您的 User
文件夹(或 Packages 的其他子文件夹)并创建一个 python 文件(例如 html_complete_tag.py
)。
然后打开python文件,粘贴以下代码即可:
import sublime, sublime_plugin
class HtmlCompleteTagCommand(sublime_plugin.TextCommand):
def run(self, edit):
view = self.view
view.run_command("commit_completion")
for sel in view.sel():
if not sel.empty(): continue
pos = sel.begin()
# check we are inside a tag
if view.substr(sublime.Region(pos-1, pos+1)) == "><":
# we have: <tag>|<tag/>
# insert \n< one position after the cursor
# => <tag>|<\n<tag/>
view.insert(edit, pos+1, "\n<")
# remove the char after the cursor
# => <tag>|\n<tag/>
view.replace(edit, sublime.Region(pos, pos+1), "")
# insert a newline and a tab at the cursor
# => <tag>\n\t|\n<tag/>
view.insert(edit, pos, "\n\t")
这将提交完成,如果在标记内插入换行符。动作有点奇怪,因为我们希望光标在插入 \n\t\n
.
要使用 html 中的键绑定,只需将以下行添加到您的键映射中:
{ "keys": ["tab"], "command": "html_complete_tag", "context":
[
{ "key": "auto_complete_visible" },
{ "key": "selector", "operator": "equal", "operand": "text.html" }
]
},
如果您使用 enter
确认自动完成,则将 tab
替换为 enter
或保留两个键绑定。