Як зробити обгортання тегів у коді VS?


170

Я хотів би обернути вибраний HTML в тег у коді VS. Як це зробити?


1
Однією з причин я не в змозі повністю перейти на VSCode та вирвати Sublime.
буджі

3
@budji Це вбудована функція з емметом ... Практично все, що ви могли б хотіти, це також розширення зараз, і якщо це не так, ви завжди можете зробити своє.
Джеймс Койл

Мені подобається це запитання, і я знаю і виклик на розширення (Emmet Wrap with абревіатура), але кожен би знав, як робити зворотні дії. Наприклад: спочатку напишіть <p> ... </p> і додайте всередину <u> ** </u> із цим результатом <p> ... <u> ** </u> ... </ p>
Jmainol

Відповіді:


342

Вбудований Еммет може зробити трюк:

  1. Вибір тексту (необов’язково)
  2. Відкрити палітру команд (зазвичай Ctrl+ Shift+ P)
  3. Виконати Emmet: Wrap with Abbreviation
  4. Введіть тег div(або абревіатуру .wrapper>p)
  5. Удар Enter

Команда може бути призначена прив'язці клавіш.

введіть тут опис зображення


Ця річ навіть підтримує аргументи:

{
    "key": "ctrl+shift+9",
    "command": "editor.emmet.action.wrapWithAbbreviation",
    "when": "editorHasSelection",
    "args": {
        "abbreviation": "span"
    }
},

Використовуйте його так:

  • span.myCssClass
  • span#myCssId
  • b
  • b.myCssClass


4
Це має бути відповіддю, еммет уже встановлений у vscode
Натан

15
Ctrl+ pце goToFile. Палітра команд Ctrl+ Shift+ P.
Алекс

1
Для JSX довелося додати цей додатковий крок: github.com/Microsoft/vscode/isissue/4962#issuecomment-323880988
Gezim

1
З VSCode 1.35.0 (і, можливо, раніше) це опрацьовується вікно з JSX - не потрібно ніяких додаткових конфігурацій
davnicwil

98

Швидкий пошук на ринку VSCode: https://marketplace.visualstudio.com/items/bradgashler.htmltagwrap .

  1. Запустити швидкий відкритий код VS ( Ctrl+ P)

  2. вставити ext install htmltagwrapі ввести

  3. виберіть HTML

  4. натисніть Alt+ W( Option+ Wдля Mac).


Ви, мабуть, маєте на увазі вибір Установити на кроці 3.
Самір

1
"Для використання виберіть фрагмент коду та натисніть" Alt + W "(" Варіант + W "для Mac)." Досить просто! За винятком того, що це не працює. Я спробував версію 0.0.3 з кодом VS 1.16.1. Це майже працює. Він намагається обернути виділення <p></p>тегами, а не загальним, <div></div>що, здавалося б, зробити більш розумним. Найгірше те, що вона провалюється. Він отримує вихід на кшталт<p><p>My selected text.</p>
Самір

1
Я спробував інші подібні розширення. Але поки що мені не пощастило знайти той, який працює. Цей був найближчим до робочого рішення. Я спробував завершити 0.0.1 Девідом Тейлором, і Ctrl + я взагалі не працював.
Самір

1
ОНОВЛЕННЯ: розширення зараз працює коректно і вирішує вказані вище проблеми. Більше не дублюється тег, і тепер ви можете налаштувати тег, який потрібно вставити за допомогою налаштування. Так що якщо ви хочете, щоб тег буде <div>додати наступний параметр, "htmltagwrap.tag": "div".
bgashler1

це досить погана реалізація - працює для одного тегу, було б непогано мати щось подібне до блокнота блокнота ++ html, де ви можете обернути виділення за тегом з вашого вибору налаштованого тегу
Саша Бонд

37

Оскільки я не можу коментувати, розкрию фантастичну відповідь Алекса.

Якщо ви хочете, щоб підняття, яке нагадує піднесене, з обгортанням відкрийте розширення Keymap (Налаштування> Розширення клавіатури [ Cmd+ K Cmd+ M]) та додайте наступний об'єкт:

{
    "key": "alt+w",
    "command": "editor.emmet.action.wrapIndividualLinesWithAbbreviation",
    "when": "editorHasSelection && editorTextFocus"
}

Яка буде прив'язувати команду обертання Emmet до Alt+, Wколи вибрано текст

(Вибачте за інструкції лише для OSX)


7
Ось як я додав ярлик: Налаштування> Клавіші швидкого доступу до клавіш; ... потім шукайте обертання emmet; ... натисніть +, щоб додати ваш ярлик; ... :)
Luckylooke

1
додатково я додав && resourceLangId == 'html', щоб працювати лише для веб-сторінок
surpavan

@surpavan, приємно, але це також може бути зручно мати в інших типах файлів, наприклад, файли шаблонів html
Ендрю Льюїс,

1
@AndrewLewis - так, саме тому я зберігав його як мовний ідентифікатор, а не розширення файлу (files.associations).
surpavan

Shift + Alt + W безкоштовний для вікон.
Тимофей

24
  1. Відкрийте комбінації клавіш, ввівши ⌘ Command+ k ⌘ Command+ sабоCode > Preferences > Keyboard Shortcuts
  2. Тип emmet wrap
  3. Клацніть знак плюс ліворуч від "Emmet: Wrap with абревіатура"
  4. Тип ⌥ Option+w
  5. Натисніть Enter

3

imo, є краща відповідь на це за допомогою Snippets

Створіть фрагмент із таким визначенням:

"name_of_your_snippet": {
    "scope": "javascript,html",
    "prefix": "name_of_your_snippet",
    "body": "<${0:b}>$TM_SELECTED_TEXT</${0:b}>"
}

Потім прив’яжіть його до ключа в keybindings.json Наприклад, наприклад:

{ 
    "key": "alt+w",
    "command": "editor.action.insertSnippet",
    "args": { "name": "name_of_your_snippet" }
}

Я думаю, що це має дати вам точно такий же результат, що і htmltagwrap, але без необхідності встановлювати розширення.

Він буде вставляти теги навколо вибраного тексту, за замовчуванням - <b>тег & вибирає тег, тому введення дозволяє змінити його.

Якщо ви хочете використовувати інший тег по замовчуванням просто змінити bв bodyвластивості сниппета.


Це добре, але Еммет може це зробити і багато іншого, наприклад, генеруючи вкладені HTML, атрибути та списки. Еммет виходить із коробки з кодом VS.
Ендрю Льюїс

Я не розумію суті. Звичайно, Еммет складніший, і я можу зробити багато речей, але для обгортання вибору тексту тегом це рішення чудово! Під час загортання не потрібно переміщати очі у верхню частину екрана / вікна. Це трапляється прямо там, де ви вже були, тому що ви вибрали текст! Це досить поширений випадок використання та швидке рішення з малим часом роботи!
Андрій V

Я дуже хвилювався цим, проте не зміг змусити його працювати: /
Ікаро,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.