Emmet Как обернуть несколько тегов Usig - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь обернуть кучу данных следующими тегами.

Например:

link1
link2
link3
link4
link5

Я хочу, чтобы каждый из них был обернут следующими тегами.

<url>
<loc>link1</loc>
<lastmod>2020-01-16T22:59:45+00:00</lastmod>
<priority>0.80</priority>
</url>

<url>
<loc>link2</loc>
<lastmod>2020-01-16T22:59:45+00:00</lastmod>
<priority>0.80</priority>
</url>
....

Я хочу знать, возможно ли это сделать с помощью кода Эммета. Любая помощь будет оценена.

Ответы [ 3 ]

3 голосов
/ 04 февраля 2020

Есть две вещи, которые вы должны использовать из синтаксиса Emmet:

  • Неявный повторитель: пометьте элемент с помощью * (без номера) для Emmet, чтобы повторять элемент столько, сколько строк вы переносите. Например, ul>li*
  • Выходной заполнитель: скажите Эммету, куда поместить содержимое, которое вы оборачиваете $#. Вы можете использовать его в тексте (li{Put here: $#}) и / или в атрибутах (li[title=$#]).

Таким образом, в конечном итоге ваше сокращение будет выглядеть следующим образом:

url*>loc{$#}+lastmod{2020-01-16T22:59:45+00:00}+priority{0.8}

Обратите внимание, что по какой-то причине в VSCode вы должны использовать Emmet: Обтекание отдельных строк с сокращением для обтекания нескольких строк, тогда как в других редакторах по умолчанию Обтекание с сокращением должно работать .

Подробнее о синтаксисе сокращений: https://docs.emmet.io/abbreviations/syntax/

2 голосов
/ 04 февраля 2020

В PHPStorm я бы предложил определить живой шаблон для этого:

<url>
<loc>$SELECTION$</loc>
<lastmod>$date$</lastmod>
<priority>0.80</priority>
</url>

, где $date$ имеет date("yyyy-MM-dd'T'HH:mm:ss.SSSZ"), используемое как Выражение :

enter image description here

Теперь включите режим выбора столбца ( Редактировать | Режим выбора столбца ), выберите линии, которые вы хотите окружить тегами, выберите Код> Окружить живым шаблоном ...

1 голос
/ 05 февраля 2020

Другой альтернативой является использование обычных фрагментов кода. Это для vscode:

"link snippet": {
  "prefix": "link",
  "body": [
    "<url>"
    "<loc>$TM_SELECTED_TEXT</loc>",

    "<lastmod>2020-01-16T22:59:45+00:00</lastmod>",  // if date is fixed ahead of time

       // use below if date is dynamic at creation time
     "<lastmod>${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE}T${CURRENT_HOUR}:${CURRENT_MINUTE}:${CURRENT_SECOND}+00:00</lastmod>"

    "<priority>0.80</priority>",
    "</url>",
    ""
  ],
  "description": "Wrap link with url, etc."
},

Тогда, поскольку вам нужно будет объединить 3 команды, чтобы упростить эту задачу, используйте расширение макроса, например multi-command . Введите это в свои настройки. json:

  "multiCommand.commands": [

    {
      "command": "multiCommand.expandLink",
      "sequence": [
        "editor.action.insertCursorAtEndOfEachLineSelected",
        "cursorHomeSelect",
        {
          "command": "editor.action.insertSnippet",
          "args": {
            "name": "link snippet",
          }
        },
      ]
    }
  ]

Это вызовет фрагмент после того, как он выберет каждую из ваших строк отдельно. Для запуска самого макроса вам нужна привязка клавиш (в сочетаниях клавиш. json):

{ 
  "key": "shift+alt+l",
  "command": "extension.multiCommand.execute",
  "args": { "command": "multiCommand.expandLink" },
},

Достаточное количество настроек, но тогда это всего лишь одна связка клавиш для запуска всего этого. Демо:

wrap link demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...