Hapus teks di antara tag HTML di vim?

164

aku tahu

di<

akan dihapus dalam tag HTML itu sendiri.

Apakah ada cara mudah untuk menghapus teks di antara dua tag?

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

Terima kasih!

CMB
sumber

Jawaban:

321

ditakan menghapus teks di antara tag XML yang cocok. ( ituntuk "blok tag dalam".)

Lihat :h itdan :h tag-blocks.

Brian Carper
sumber
30
Dan, tentu saja, citketika Anda ingin segera menulis setelahnya.
Debilski
6
Dan plugin Surround ( vim.org/scripts/script.php?script_id=1697 ) mengagumkan ketika Anda ingin melakukan hal-hal seperti mengubah tag sekitarnya (cst) dari <p> ​​ke <div>, misalnya.
Kris Jenkins
4
Ada juga dat (Hapus blok Tag) yang menyertakan tag sebenarnya. cit yang seperti dit tetapi memasuki mode insert sesudahnya. cat yang seperti dat tetapi memasuki mode insert sesudahnya. Juga di "dan di" (masing-masing untuk menghapus kutip dalam ganda dan menghapus kurung dalam.
aiham
@ KrisJenkins dapatkah Anda menunjukkan contoh lengkap bagaimana mencapai itu? Saya hanya bisa melakukannya dengan tanda kutip / kurung.
FelikZ
1
Juga vat(atau vit), diikuti oleh berulang at(atau it) untuk secara progresif memilih tag yang mengelilinginya. (Atau v2at, dll). Kemudian duntuk menghapus (dll).
Joe Freeman
27
cit
ci"

Dua perintah enabler produktivitas terbaik vim.

Saya menghemat banyak waktu dan usaha hanya dengan mereka berdua.

chipairon
sumber
3
cittercakup dalam utas ini, tetapi untuk anak cucu, ci"akan dihapus hingga "ditemukan berikutnya . bagus untuk mengubah nama kelas dalam tag html, seperti <span id="really long annoying-id">- dengan kursor pada awalnya ", tekan ci"dan masukkan karakter baru di antara tanda kutip.
Alex Moore-Niemi
ciwjuga berguna karena menghapus kata saat ini; Saya menggunakannya lebih dari citdan ci"sebenarnya.
John Sparwasser
2
@ AlexMoore-Niemi: ci"benar-benar akan menghapus teks ke kiri sampai kutipan berikutnya dan ke kanan sampai kutipan berikutnya dan kemudian masuk ke mode insert. ct"sebenarnya adalah perintah untuk "menghapus hingga" ditemukan "berikutnya. Tapi ya, itu berperilaku sama jika kursor berada di bawah kutipan kiri.
schlimmchen
9

coba dt < saat kursor berada pada karakter pertama yang akan dihapus. Dalam contoh Anda, 'H'.

JD Frias
sumber
Juga sangat berguna untuk situasi lain, terima kasih! (pikir saya pikir itu harus "dt <")
CMB
1
Meskipun ini benar secara teknis, ini membutuhkan navigasi ke karakter pertama yang ingin Anda hapus alih-alih hanya melompat ke mana saja di baris. Tapi yang benar itu benar. :-)
lyonsinbeta
4

( kursor pada karakter pertama yang akan dihapus ) v / <[enter] d

Solusi ini dimulai pada karakter pertama, kemudian memasuki mode visual ("v"). Kemudian mencari braket mulai berikutnya ("/ <"), dan kemudian tekan enter untuk keluar dari pencarian.

Pada titik ini, pilihan visual Anda akan mencakup teks yang akan dihapus. tekan d ("d") untuk menghapusnya.

Jika saya harus melakukan ini untuk banyak tag, saya akan merekam perintah dan menggabungkannya dengan beberapa pencarian lain untuk membuatnya berulang. Urutan kunci mungkin terlihat seperti ini:

[ kursor pada awal file ] qa /> [enter] lv / <[enter] dnq

lalu tekan:

20 @ a

untuk melakukan ini selama 20 tag

brad
sumber
Saya dulu menggunakan perintah seperti c/<[enter]banyak, dalam "hidup Vim" saya, tapi sekarang saya agak menyesal tentang itu. Soalnya, sebagian besar plugin "mode-Vi" untuk editor / IDE lain yang populer tidak mendukung jenis perintah khusus ini. Mereka mendukung cit, ci", ct<dan bagaimanapun. Jadi, saya mengajar lagi.
pilat
-1

Jika Anda bertujuan untuk melakukan kebalikan dari menghapus teks di antara flag, saya sarankan menginstal Vim-Surround dan menjalankan dstyang menghapus tag surround

Nick Sarafa
sumber