Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Delete text in between HTML tags in vim?

Tags:

html

vim

editor

dit will delete the text between matching XML tags. (it is for "inner tag block".)

See :h it and :h tag-blocks.


cit
ci"

Two of the best productivity enabler commands of vim.

I save a lot of time and effort with just those two.


try dt< while the cursor is on the first character to delete. In your example the 'H'.


dit - delete inner tag, remains in command mode
cit - change inner tag, changes to edit mode

di" - delete inside ""
di' - delete inside ''

di( - delete inside ()
di) - delete inside ()

di[ - delete inside []
di] - delete inside []

di{ -delete inside {}
di} - delete inside {}

di< - delete inside <>
di> - etc

swap first letter d for c, if you want to be in edit mode after typing the command


(cursor on first character to delete) v/<[enter]d

This solution starts on the first character, then enters visual mode ("v"). It then searches for the next start bracket ("/<"), and then press enter to exit the search.

At this point, your visual selection will cover the text to delete. press d ("d") to delete it.

If I had to do this for a bunch of tags, I'd record the command and combine it with some other searches to make it repeatable. The key sequence might look like this:

[cursor on start of file] qa/>[enter]lv/<[enter]dnq

then press:

20@a

to do this for 20 tags