Emmet и его использование в VSCode / Хабр
Emmet — это утилита для текстовых редакторов, которая упрощает и повышают скорость написания кода. Первоначально слово «Emmet» означало муравей — маленькое насекомое, которое может нести в 50 раз больше своего веса. Чтобы использовать Emmet, нужно скачать и установить плагин для используемого текстового редактора. Список всех плагинов доступен на официальном сайте. Если вы используете Visual Studio Code, то устанавливать плагин не нужно, он уже встроен.
Аббревиатуры
Аббревиатуры — это специальные выражения, которые преобразуются в структурированный блок кода. Во многих редакторах также создаются метки табуляции, по которым вы можете быстро перемещаться между важными местами сгенерированного кода с помощью клавиши Tab.
У Emmet нет предопределенного набора имен тегов, вы можете написать любое слово и преобразовать его в тег: div
→ <div></div>
, foo
→ <foo></foo>
и так далее. Преобразование происходит по нажатию клавиши. Обычно это клавиша Tab. В VSCode, чтобы выполнять преобразование по нажатию клавиши Tab, добавьте следующую настройку:
{ "emmet.triggerExpansionOnTab": true }
Создание базовой структуры html
Для создания базовой структуры html напишите символ !
и нажмите клавишу Tab. В результате файл заполнится следующим содержимым:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body></body> </html>
Операторы вложенности
Операторы вложенности используются для позиционирования элементов внутри сгенерированного дерева.
Дочерний элемент
Оператор >
позволяет вкладывать один элемент в другой:
div>ul>li
→
<div> <ul> <li></li> </ul> </div>
Соседний элемент
Оператор +
позволяет разместить элементы рядом друг с другом на одном уровне:
div+p+bq
→
<div></div> <p></p> <blockquote></blockquote>
Повторение
Оператор *
позволяет определить, сколько раз должен выводиться элемент:
ul>li*3
→
<ul> <li></li> <li></li> <li></li> </ul>
Группировка
Круглые скобки позволяют выделить в аббревиатуре отдельные поддеревья:
div>(header>ul>li*2>a)+footer>p
→
<div> <header> <ul> <li><a href=""></a></li> <li><a href=""></a></li> </ul> </header> <footer> <p></p> </footer> </div>
Вы можете вкладывать группы друг в друга и повторять их с помощью оператора умножения:
(div>dl>(dt+dd)*3)+footer>p
→
<div> <dl> <dt></dt> <dd></dd> <dt></dt> <dd></dd> <dt></dt> <dd></dd> </dl> </div> <footer> <p></p> </footer>
Атрибуты операторов
Вы можете указать атрибуты для выводимых элементов.
Указание класса и id
Оператор .
позволяет указать класс. Оператор #
предназначен для указания id:
div#header+div.page+div#footer.class1.class2.class3
→
<div></div> <div></div> <div></div>
Произвольные атрибуты
Квадратные скобки позволяют задавать элементу произвольные атрибуты:
td[title="Hello world!" colspan=3]
→
<td title="Hello world!" colspan="3"></td>
Произвольные атрибуты имеют следующие особенности:
Для разделения атрибутов используется пробел.
Если не указано значение атрибута, то его значением станет пустая строка с меткой для табуляции (если ваш редактор поддерживает метки табуляции).
Можно использовать одинарные и двойные кавычки для указания значений атрибутов.
Если значение атрибута не содержит пробелов, то его не обязательно заключать в кавычки.
Нумерация
Оператор $
позволяет создавать нумерацию. Для этого поместите данный оператор после имени элемента, имени атрибута или значения атрибута:
ul>li.item$*3
→
<ul> <li></li> <li></li> <li></li> </ul>
Оператор $
можно поместить в любом месте имени:
ul>li.ite$m*2
→
<ul> <li></li> <li></li> </ul>
Вы можете использовать несколько операторов $
подряд, чтобы дополнить номер нулями:
ul>li.item$$$*3
→
<ul> <li></li> <li></li> <li></li> </ul>
Начальное значение и направление нумерации
Модификатор @
@-
после оператора $
:ul>li.item$@-*3
→
<ul> <li></li> <li></li> <li></li> </ul>
Чтобы изменить начальное значение счетчика, добавьте модификатор @N
к оператору $
:
ul>li. item$@3*5
→
<ul> <li></li> <li></li> <li></li> <li></li> <li></li> </ul>
Вы можете изменить начальное значение счетчика и направление нумерации одновременно:
ul>li.item$@-3*5
→
<ul> <li></li> <li></li> <li></li> <li></li> <li></li> </ul>
Добавление текста
Фигурные скобки позволяют добавить текст в элемент:
a{Перейти}
→
<a href="">Перейти</a>
Неявные имена тегов
Во многих случаях можно не писать имя тега. Например, вместо div.content
вы можете написать .content
, что преобразуется в <div></div>
. Emmet смотрит на родительский тег каждый раз, когда вы расширяете аббревиатуру без имени тега. Если родительcкий элемент является блочным, то будет выбрать тег div
, в противном случае — span
. При этом есть несколько исключений:
li
дляul
иol
.tr
дляtable
,tbody
,thead
иtfoot
.td
дляtr
.option
дляselect
иoptgroup
.
Генератор «Lorem Ipsum»
Аббревиатуры «lorem» и «lipsum» генерируют случайный текст. Каждый раз, когда вы выполняете преобразование данных аббревиатур, генерируется текст из 30 слов, разбитый на несколько предложений.
lorem
→
Lorem ipsum dolor sit amet consectetur adipisicing elit. Et hic incidunt repellat, quos veritatis a tenetur deserunt accusantium ab ad adipisci ex rerum distinctio corrupti omnis asperiores, numquam exercitationem sapiente.
Вы можете указать количество генерируемых слов. Например, lorem10
сгенерирует текст из 10 слов. Также, вы можете использовать оператор повторения *
, чтобы создать несколько элементов со случайным текстом:
ul>li*3>lorem10
→
<ul> <li>Lorem ipsum dolor sit amet consectetur adipisicing elit. Ad, temporibus.</li> <li>Earum totam eius repudiandae sit optio, consectetur ipsum officiis enim?</li> <li>Ex, molestias. Minima ducimus quaerat et earum commodi natus autem?</li> </ul>
Добавление аббревиатур и фрагментов
Некоторые аббревиатуры преобразуются в элементы с предустановленными атрибутами. Список таких аббревиатур для различных языков вы можете посмотреть в официальном репозитории в каталоге snippets. Например, аббревиатуры для html находятся в файле html.json.
Способ добавления аббревиатур вы можете узнать в документации плагина, который используете в текстовом редакторе. Если используется Visual Studio Code, то вам нужно создать файл snippets.json
. Таких файлов может быть несколько, например, один с глобальными настройками, а другой с локальными на уровне проекта. Затем, в файле настроек VSCode, добавьте параметр emmet.extensionsPath
, содержащий массив путей к каталогам, содержащим файл snippets.
. Рассмотрим на примере: создайте каталог .vscode
в текущем проекте. В каталоге .vscode
создайте файлы settings.json
и snippets.json
. Вот как это сделать через терминал:
mkdir .vscode && cd .vscode
touch settings.json && touch snippets.json
В файл settings.json
добавьте следующую настройку:
{ "emmet.extensionsPath": ["./.vscode"] }
В файле snippets.json
для каждого языка записываются его псевдонимы и фрагменты. На данный момент в VSCode используется Emmet 2.0. В данной версии аббревиатуры и фрагменты задаются через один параметр snippets
. Создадим несколько аббревиатур для html
и css
:
{ "html": { "snippets": { "abbr1": "ul>li*3", "abbr2": "ol>li*3" } }, "css": { "snippets": { "clw": "color: white", "clb": "color: black" } } }
Подробности создания аббревиатур и фрагментов в VSCode можно найти в официальной документации.
sublime text — После установки emmet не работает shift+alt+стрелка
В примере рассмотрим, что делать, если больше не функционирует сочетание Alt+Shift+↑, хотя Emmet занимает и Alt+Shift+↓.
Либо вы хотите испробовать какое-то новое сочетание, но результата нет или он совсем не такой, какой по идее должен быть.
В нередко используемых и находящихся в автозагрузке программах я дезактивирую горячие клавиши, если не планирую ими пользоваться. Некоторые программы регистрируют шорткаты глобально, и есть шанс нарваться на конфликт горячих клавиш. Ну а нужные мне комбинации сохраняются в голове, при необходимости они вспоминаются.
Если убедились, что проблема не в стороннем софте, значит, скорее всего, она возникает из-за несогласованности сочетаний между плагинами в Sublime Text 3. Также они имеют нехорошее на мой взгляд свойство изменять дефолтные сочетания. Раз уж Emmet этим злоупотребляет, то что говорить о малоиспользуемых плагинах.
Ещё вариант — после обновлений Sublime Text до новых билдов, некоторые сочетания могут быть заменены/удалены разработчиками. Порядок действий, впрочем, остаётся тем же.
1. Плохое решение
Поудаляй плагины по одному — узнаешь в каком дело. Это может быть долго, потребовать переустановки множества плагинов, вы не узнаете причин, вызвавших конфликт в проблемном плагине; и неясно, что делать, если нужны как плагин, так и занятый им шорткат.
2. Не самое удачное решение
Проделывать только:
Preferences → Key Bindings - Default (если перестали работать горячие клавиши по умолчанию)/ → Package Settings → <имя плагина, в котором начали отказывать хоткеи> → Settings — Default (когда перестали функционировать горячие клавиши в одном из плагинов) → поиском ищем отказавшее сочетание → копируем содержащую его строку → вставляем её в файл, открывающийся после
{ "keys": ["alt+shift+up"], "command": "select_lines", "args": {"forward": false} },
В этом файле с расширением sublime-keymap
используется синтаксис JSON, если не знаете его, и у Вас будет выскакивать окно с ошибками, читаем тут (ищем по тексту JSON-синтаксис) и здесь.
Хоткей заработает, но вы не узнаете, в каком плагине и тем более, какой из его команд проблема.
3. Хорошее решение
Плагин Keymaps. После установки Tools → Keymaps → Cheat Sheet.
Откроется полный список горячих клавиш Sublime Text 3: по умолчанию, занятых плагинами и пользовательских.
Находим поиском по открывшемуся файлу, какая команда какого плагина занимает наш шорткат, определяем, нужна она нам или нет, если нет, то проделываем действия, описанные в предыдущем разделе.
У метода есть один недостаток. У меня не работало сочетание Ctrl+L — выделение строки. В Cheat Sheat мне не удалось найти ничего, что занимало это сочетание. Оказалось, в одном из плагинов использовалось сочетание Ctrl+K, Ctrl+L, а хоткеем Ctrl+L вызывалась та же самая команда, что и Ctrl+K, Ctrl+L.
4. Способ наверняка
Ctrl+' (машинописный обратный апостроф, символ расположен на той же клавише, где кириллическая «ё») → вводим в открывшееся поле sublime. log_commands(True)
, затем sublime.log_input(True)
.
sublime.log_input(True)
— встроенный в Sublime Text 3 кейлоггер, вывод осуществляется в ту же консоль, которую мы открыли сочетанием Ctrl+`.sublime.log_commands(True)
— вывод лога команд в эту консоль.
Нажимаем в любом месте открытого файла проблемный хоткей, в примере это Alt+Shift+↑, смотрим вывод:
key evt: shift+alt+up command: run_emmet_action {"action": "increment_number_by_10"}
По командам в Sublime Text 3 обычно становится ясным, что за плагин их использует, в данном случае Emmet. Для подробностей, что означает команда, можно погуглить или же пройтись по пути Preferences → Package Settings → Emmet → Key Bindings - Default . Для себя я решил: мне не нужно, чтобы Emmet занимал это сочетание, и проделал действия, описанные в разделе 2.
Раз в Emmet, установленном почти 2 миллиона раз, таки решили перекрыть
Emmet Cheat Sheet (2023) — InterviewBit
Введение
Emmet — это набор инструментов для веб-разработчиков, который может значительно улучшить рабочие процессы HTML и CSS.
По сути, вы можете делать покупки с помощью крупнейшего доступного редактора текстового содержимого или покупать и повторно использовать блок часто используемого кода, называемый «фрагментом». Фрагменты — отличный способ повысить производительность, но во всех реализациях нет необычных ловушек. Сначала вам нужно набросать фрагмент, и его нельзя увеличить во время выполнения.
Что такое Эммет и зачем его использовать?
Эммет выводит концепцию сниппетов на совершенно новый уровень. Вы можете ввести CSS-подобное выражение, которое можно динамически анализировать и отправлять выходные данные, зависящие от ввода в аббревиатуре. Рабочий процесс Эммета основан на HTML/XML и CSS, но разработан и оптимизирован для разработчиков веб-сайтов, которые также можно использовать в языках программирования.
Эммет позволяет писать молниеносный код. Простые CSS-аббревиатуры превращаются в сложный код. Легко создавайте текст lorem ipsum, используйте множество сочетаний клавиш и многое другое.
Особенности
- Вы узнаете, как использовать Эммета с точки зрения веб-разработчика. Как веб-разработчик, вы знаете, как использовать Emmet, используя сокращения. Они похожи на селекторы CSS с ярлыками для идентификатора, класса, пользовательских атрибутов, вложения деталей и т. д. Они динамические, анализируются по мере ввода и предоставляют динамические фрагменты.
- Динамические фрагменты отличаются от фрагментов редактора по умолчанию тем, что они динамические и анализируются по мере ввода. Например, чтобы создать тег, напишите MyComponent>custom-element.
- Emmet предоставляет уникальный синтаксис для значений CSS, встроенных в Emmet. Например, bd1-s#0.5 может быть выражен как граница: 1px сплошной rgba (0, 0, 0, 0,5).
- Доступно для самых известных синтаксисов: используйте простую аббревиатуру для предоставления кода для самых известных синтаксисов, таких как HAML, Pug, JSX, SCSS, SASS и т. д.
Как использовать Эммета?
Emmet можно использовать, включив плагины emmet в IDE. Добавление подключаемых модулей emmet в IDE и использование emmet упоминается в следующих разделах.
Добавление Emmet в IDE :
- Почти все современные IDE, включая VS Code, поддерживают emmet. Однако, если подключаемый модуль по умолчанию недоступен в среде IDE, его можно загрузить с веб-сайта emmet.
Использование Emmet в коде :
- Когда подключаемый модуль emmet добавлен в IDE, просто введите HTML-тег без <>, и редактор покажет варианты тега. Эммет использует синтаксис селектора, похожий на CSS. Напишите аббревиатуру, похожую на CSS, поместите курсор в конец аббревиатуры и нажмите Tab, Ctrl+E или любую другую клавишу, настроенную для преобразования аббревиатуры в фактический HTML-код. Эммет расширяется до. Вы также можете указать значение, но если вы этого не сделаете, в каждом пустом свойстве будет создана вкладка. Вы можете вставить целевой URL-адрес и нажать Tab, чтобы перейти к следующей точке редактирования, где вы можете вставить следующее желаемое значение.
С уверенностью пройдите свое следующее собеседование в области технологий!
Пройди бесплатно пробное интервью, получи мгновенный⚡️ отзыв и рекомендацию💡
Питаться от
Сертификат включен
О спикере
Чему вы научитесь?
Я хочу получать дальнейшие обновления и подтверждения через WhatsApp
Зарегистрируйтесь сейчас
Учебное пособие Emmet: от базового до продвинутого
1.
Добавление атрибутов ID и CLASS- Добавление ID
Используя emmet, мы можем добавить селекторы ID. Напишите символ «#», а затем имя идентификатора, чтобы добавить идентификатор.
#sample_1ge
Редактор кода создаст div с идентификатором «sample_1» после того, как вы нажмете клавишу табуляции.
Для других элементов мы также можем создать идентификатор. Например, имя элемента должно быть написано после символа «#», за которым следует имя идентификатора, чтобы создать
с идентификатором «sample_1».
p#sample_1
Редактор кода создаст p с идентификатором «sample_1» после того, как вы нажмете клавишу табуляции.
- Добавление CLASS
С помощью emmet мы можем добавить селекторы ID. Написать «.» символ, а затем имя идентификатора, чтобы добавить идентификатор.
.sample_1
Редактор кода создаст div с идентификатором «sample_1» после того, как вы нажмете клавишу табуляции.
Для других элементов мы также можем создать идентификатор. Например, имя элемента должно быть написано после «.» символ и имя идентификатора для создания
с идентификатором «sample_1».
p.sample_1
Редактор кода создаст p с идентификатором «sample_1» после того, как вы нажмете клавишу табуляции.
- Добавление CLASS и ID
С помощью emmet мы можем создавать теги, содержащие как класс, так и идентификатор. Такие теги должны быть написаны с именем элемента, за которым следует «#» имя идентификатора, за которым следует «.» и имя класса.
p#sample_Name.class_Name
Редактор кода создаст p с классом «class_Name» и идентификатором «sample_Name» после того, как вы нажмете клавишу табуляции.
- Добавление нескольких КЛАССОВ
Используя emmet, мы можем генерировать теги с различными классами. Это требует написания имени элемента, за которым следует. Далее следуют имена классов, которые мы хотим добавить.
div.class_1.class_2.class_3
Редактор кода создаст div с классами «class1», «class2» и «class3» при нажатии клавиши табуляции.
<дел>
2. Добавление пользовательских атрибутов
Используя emmet, мы можем создать тег с определенным атрибутом и передать его значение. Для этого мы должны заключить имя элемента в квадратные скобки «[ ]». Мы можем включить имя (имена) одного или нескольких атрибутов в скобки вместе со значением.
p[title="Custom Title"]
Редактор кода создаст элемент с именем «Scaler Academy», когда вы нажмете клавишу табуляции.
Мы можем передать атрибут без параметра и записать несколько атрибутов. Без аргумента к атрибуту будет применена пустая строка («»).
td[rowspan=4 colspan=5 title]
Редактор кода создаст td с rowspan=4 colspan=4 title=»» при нажатии клавиши табуляции.
3. Добавление текста
С помощью emmet мы также можем добавлять предложения или абзацы внутри тегов. Для этого мы должны написать имя элемента внутри фигурных скобок. Текстовый элемент может быть добавлен в эти фигурные скобки.
a{Нажмите на ссылку здесь}
Редактор кода создаст a со словом «Нажмите на ссылку здесь», когда вы нажмете клавишу табуляции.
Нажмите на ссылку здесь
Вы можете скачать PDF-версию шпаргалки Emmet.
Скачать PDF Скачать PDF
Скачать PDF
Запрошенная вами загрузка готова!
Нажмите
здесь
Скачать.
4. Добавление ребенка
Теги могут быть вложены в теги. Для этого мы должны написать имя родительского тега, за которым следует символ > перед тегом, который будет вложен.
div>p_1
Редактор кода создаст div с p_1 внутри при нажатии клавиши табуляции.
<дел>