Автозаполнение html-тегов в jsx (sublime text)
Я хотел бы иметь возможность использовать автозаполнение для тегов html в моем коде react/jsx. Так же, как это работает для html-файлов. Могу ли я настроить sublime text 3 для включения автозаполнения тегов для файлов jsx?
7 ответов
стоит отметить, что вы можете включить встроенный тег Sublime ближе в JSX, скопировав и слегка изменив привязку клавиш для /
что происходит с Default.sublime-package
. Добавьте в пользовательскую карту ключей следующее:
{ "keys": ["/"], "command": "close_tag", "args": { "insert_slash": true }, "context":
[
{ "key": "selector", "operator": "equal", "operand": "(text.html, text.xml, meta.jsx.js) - string - comment", "match_all": true },
{ "key": "preceding_text", "operator": "regex_match", "operand": ".*<$", "match_all": true },
{ "key": "setting.auto_close_tags" }
]
}
предполагая, что вы используете пакет Babel, селектор meta.jsx.js
будет соответствовать синтаксису JSX и включить поведение закрытия тегов. Имя области может отличаться для других пакетов, и в этом случае вы можете использовать ScopeHunter для проверки областей, которые применяется предпочтительный синтаксис JSX.
установить: babel & Emmet
затем добавьте это в свои привязки ключей-User
{
"keys": ["tab"], "command": "expand_abbreviation_by_tab", "context": [
{
"operand": "source.js",
"operator": "equal",
"match_all": true,
"key": "selector"
},
{
"key": "selection_empty",
"operator": "equal",
"operand": true,
"match_all": true
}
]
},
{ "keys": ["tab"], "command": "next_field", "context":
[
{ "key": "has_next_field", "operator": "equal", "operand": true }
]
}
Он не будет автозакрытия скобок при вводе, а можно просто использовать Sublime встроенный в теге ближе с командаопции. для mac или alt. для windows.
Я настоятельно рекомендую комбинацию Бабель-возвышенное и Эммет. Если вы укажете "JavaScript (Babel)" в качестве синтаксиса, оба пакета будут работать вместе, при этом emmet правильно генерирует "className" и "htmlFor", если это необходимо.
единственным недостатком является то, что расширение не будет работать с вкладкой, но с CTRL+E. Это связано с тем, что вкладка имеет кучу другого использования в JavaScript.
основываясь на ответе Даниэля, я сделал плагин только для этого.
источник:https://github.com/FMCorz/AutoCloseTags
установка:
- добавьте вышеуказанный репозиторий с
Package Control: Add repository
- выполнить команду
Package Control: Install package
- выберите
AutoCloseTags
Если у вас установлен babel для sublime, попробуйте открыть свой .js and .JSX файлы и перейдите в меню Вид > синтаксис > открыть все с текущим .. > babel > javascript (babel) для просмотра правильной подсветки синтаксиса и использования CTRL + E для автозаполнения html-тега внутри ur .jsx
как другие предложили: установить Бабель и Эммет !
список аббревиатуры Эммета
( см. демо здесь ) ( и шпаргалка здесь )
Вам даже не нужно вводить угловые скобки-Эммет сделает это, закрывающий тег и многое другое!
использовать CtrlE в разверните аббревиатуру.
Emmet docs: отлично объясняет сокращения.. а не как "расширить аббревиатуру" -по крайней мере, я не смог найти.
От Возвышенного, Я
- открыл: Preferences -> Package Settings -> Emmet -> Key Bindings - Default
- искали expand_abbreviation
- нашли ctrl+e
счастье - работает как Шарм :-)
Я и рекомендую установить AutoCloseTags, предусмотренных FMcorz и Дэниэл Шэннон.
эта комбинация дает
- автоматическое закрытие (интерпретируемый тег из-за правил вложенности), просто набрав </
, отлично на лету, тогда как, Эммет будет
- разверните "аббревиатуру" до полного открытия и закрытия тегов (и более), нажав Crtl-E
. Это отлично подходит для создания каркаса.