emmet принудительно установить положение курсора по умолчанию после расширения

#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> .

  1. как я могу заставить курсор находиться внутри .one{|} после расширения?
  2. кроме того, могу ли я поместить разрыв строки внутри текста, например .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>"
  ]
}

 

См. раздел Определение собственных фрагментов.

фрагмент html