Видалити текст між тегами HTML in vim?


164

я знаю

di<

видалить із самого тегу HTML.

Чи є простий спосіб видалити текст між двома тегами?

<span>How can I delete this text?</span>

Дякую!

Відповіді:


321

ditвидалить текст між відповідними тегами XML. ( itпризначено для "внутрішнього блоку тегів".)

Дивіться :h itі :h tag-blocks.


30
І, звичайно, citколи хочеш писати відразу після цього.
Дебільський

6
І плагін Surround ( vim.org/scripts/script.php?script_id=1697 ) є приголомшливим, коли ви хочете, наприклад, змінити навколишній тег (cst) з <p> на <div>.
Кріс Дженкінс

4
Існує також dat (Видалити блок тегів), який включає фактичні теги. cit, що схоже на dit, але після переходу в режим вставки. кішка, яка схожа на DAT, але після переходу в режим вставлення Також ді "і ді (для видалення внутрішньої подвійної цитати та видалення внутрішніх дужок відповідно.
липня в 12:05

@KrisJenkins чи можете ви показати повний приклад, як цього досягти? Я можу це зробити лише за допомогою лапок / дужок.
FelikZ

1
Також vat(або vit) з подальшим повторним at(або it) прогресивним вибором оточуючих тегів. (Або v2atтощо). Потім dвидалити (тощо).
Джо Фріман

27
cit
ci"

Дві найкращі команди, що забезпечують продуктивність vim.

Я економлю багато часу і сил лише з цими двома.


3
citохоплюється цією темою, але для нащадків ci"буде видалено до наступного "знайденого. чудово підходить для зміни назв класів у html-тегах, як-от <span id="really long annoying-id">- спочатку курсор ", натискання ci"та потрапляння до вставлення нових символів між цитатами.
Алекс Мур-Ніємі

ciwтакож корисний, оскільки видаляє поточне слово; Я використовую його більше citі на ci"самому справі.
Джон Спарвассер

2
@ AlexMoore-Niemi: ci"фактично видалить текст ліворуч до наступної цитати та праворуч до наступної цитати, а потім перейде в режим вставки. ct"насправді команда "видалити до наступного" знайдено ". Але так, вона поводиться так само, якщо курсор знаходиться під лівою цитатою.
schlimmchen

9

спробуйте dt <, поки курсор на першому символі видалити. У вашому прикладі "Н".


Також дуже корисно для інших ситуацій, дякую! (думав, я думаю, це має бути "dt <")
CMB

1
Хоча це технічно вірно, воно вимагає переходу до першого символу, який ви хочете видалити, а не просто стрибати кудись у рядок. Але правда - це правда. :-)
lyonsinbeta

4

( курсор на першому символі для видалення ) v / <[enter] d

Це рішення починається з першого символу, потім переходить у візуальний режим ("v"). Потім він шукає наступну стартову дужку ("/ <"), а потім натисніть клавішу Enter, щоб вийти з пошуку.

Після цього ваш візуальний вибір охопить текст, який потрібно видалити. натисніть d ("d"), щоб видалити його.

Якби мені довелося це зробити для кучки тегів, я б записав команду і поєднав її з деякими іншими пошуками, щоб зробити її повторюваною. Ключова послідовність може виглядати приблизно так:

[ курсор на початку файлу ] qa /> [enter] lv / <[enter] dnq

потім натисніть:

20 @ a

зробити це для 20 тегів


У c/<[enter]своєму "життя Vim" я дуже часто використовував команди , але тепер про це трохи шкодую. Розумієте, більшість плагінів "Vi-mode" для інших популярних редакторів / IDE не підтримують цей тип команд. Вони підтримують cit, ci", ct<і тим НЕ менш. Отже, я знову навчаюсь.
пілат

-1

Якщо ви маєте на меті зробити зворотне видалення тексту між прапорами, пропоную встановити Vim-Surround та запустити, dstякий видаляє тег об'ємного звучання

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