Sublime Text введите пробел после автозаполнения

Как бы я написал пользовательскую привязку ключа или плагин для языка HTML, который бы добавил enter после тега?

пример

В настоящее время Sublime Text делает это после автоматического завершения

<table></table>

Я хотел бы иметь это

<table>

</table>

Я надеюсь, что вы, ребята, можете помочь. Заранее спасибо:)

1 ответ

Решение

Эти дополнения к фрагментам жестко запрограммированы в пакете HTML.

Я думаю, что самый простой способ архивировать это, это написать простой плагин самостоятельно. Для этого откройте свой User папку (или другую подпапку пакетов) и создайте файл 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 или сохранить обе комбинации клавиш.

Другие вопросы по тегам