#visual-studio-code #emmet
#visual-studio-code #эммет
Вопрос:
Я использую следующий фрагмент emmet в VS Code:
{<!DOCTYPE html>}>html[lang='${lang}']>(head>meta[charset='${charset}'] meta[http-equiv='X-UA-Compatible'][content='IE=edge'] meta[name='viewport'][content='width=device-width,initial-scale=1.0'] (title>{${title}${1}}) script style{.one{}}) (body>div.one)
После заголовка есть табуляция title>{${title}${1}}
, которая по умолчанию помещает курсор после текста title|
. Он расширяется следующим образом:
<!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>title|</title>
<script></script>
<style>.one{}</style>
</head>
<body>
<div class="one"></div>
</body>
</html>
Я хочу, чтобы курсор находился внутри класса css, между фигурными скобками .one{|}
.
Поэтому я помещаю остановку табуляции внутри класса, например .one{${1}}}
:
{<!DOCTYPE html>}>html[lang='${lang}']>(head>meta[charset='${charset}'] meta[http-equiv='X-UA-Compatible'][content='IE=edge'] meta[name='viewport'][content='width=device-width,initial-scale=1.0'] (title>{${title}}) script style{.one{${1}}}) (body>div.one)
Но после расширения курсор вместо этого помещается между тегом script. <script>|</script>
.
- как я могу заставить курсор находиться внутри
.one{|}
после расширения? - кроме того, могу ли я поместить разрыв строки внутри текста, например
.one{<linebreak>|<linebreak>}
?
Комментарии:
1. Если вы один раз нажмете вкладку, она будет работать там, где вы хотите. Если это то, что вы часто используете, это должен быть фрагмент кода — гораздо проще исправить.
Ответ №1:
Я могу воспроизвести то же поведение, которое вы видите в vscode. Обратите внимание, что если вы tab
один раз наведете курсор туда, куда вы хотите. Возможно, это ошибка.
Если вы часто используете эту форму, подумайте о том, чтобы превратить ее в фрагмент кода. Это намного понятнее, и размещение tabstop работает так, как ожидалось в vscode. И вы получаете разрыв строки, где бы вы ни создавали новую строку, поэтому разрыв строки может идти куда угодно.
Пример фрагмента:
"html9": {
"prefix": "html9", // whatever prefix you want
"body": [
"<!DOCTYPE html>", // need to escape "'s
"<html lang="en">",
"<head>",
"t<meta charset="UTF-8">", // t for a tab
"t<meta http-equiv="X-UA-Compatible" content="IE=edge">",
"t<meta name="viewport" content="width=device-width,initial-scale=1.0">",
"t<title>title|</title>",
"t<script></script>",
// "t<style>.one{$1}</style>",
"t<style>.$1{$2}</style>", // tabstop $1 for class name
"</head>",
"<body>",
// "t<div class="one"></div>",
"t<div class="$1"></div>", // tabstop $1 for class name
"</body>",
"</html>"
]
}
См. раздел Определение собственных фрагментов.