Vim'deki HTML etiketleri arasındaki metin silinsin mi?


164

biliyorum

di<

bir HTML etiketinin kendisinde silinir.

İki etiket arasındaki metni silmenin kolay bir yolu var mı?

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

Teşekkürler!

Yanıtlar:


321

diteşleşen XML etiketleri arasındaki metni siler. ( it"iç etiket bloğu" içindir.)

Bkz :h itve :h tag-blocks.


30
Ve elbette, cithemen sonra yazmak istediğinizde.
Debilski

6
Surround eklentisi ( vim.org/scripts/script.php?script_id=1697 ), örneğin çevredeki etiketi (cst) <p> 'den <div>' e değiştirmek gibi şeyler yapmak istediğinizde harika.
Kris Jenkins

4
Ayrıca gerçek etiketleri içeren dat (Bir Etiket Bloğunu Sil) vardır. cit dit gibidir ancak sonra ekleme moduna girer. dat gibi olan ama sonra ekleme moduna girer. Ayrıca di "ve di (sırasıyla iç çift tırnak silmek ve iç parantez silmek için.
aiham

@KrisJenkins buna nasıl ulaşacağınızı tam bir örnek gösterebilir misiniz? Bunu sadece tırnak işaretleri / parantezler ile yapabilirim.
FelikZ

1
Ayrıca vat(veya vit), ardından çevreleyen etiketleri aşamalı olarak seçmek için tekrarlanan at(veya it). (Veya v2at, vb.). Sonra dsilmek için (vb.).
Joe Freeman

27
cit
ci"

En iyi üretkenlik sağlayan vim komutlarından ikisi.

Sadece bu ikisi ile çok zaman ve emek tasarrufu yapıyorum.


3
citbu başlıkta ele alınmaktadır, ancak gelecek nesiller ci"için bir sonraki "bulunana kadar silinecektir . html etiketlerindeki sınıf adlarını değiştirmek için harika, örneğin <span id="really long annoying-id">- önce imleçle ", vur ci"ve tırnak işaretleri arasına yeni karakterler eklemek için bırakılır.
Alex Moore-Niemi

ciwgeçerli sözcüğü sildiğinden de yararlıdır; Ben daha fazla kullanmak citve ci"aslında.
John Sparwasser

2
@ AlexMoore-Niemi: bir ci"sonraki alıntıya kadar soldaki metni ve bir sonraki alıntıya kadar sağdaki metni siler ve ardından ekleme moduna girer. ct"aslında "bir sonraki" bulunan "a kadar silme komutudur. Fakat evet, imleç sol tırnak altındaysa aynı şekilde davranır.
schlimmchen

9

imleç silinecek ilk karakter üzerindeyken dt < deneyin . Örneğinizde 'H'.


Ayrıca diğer durumlar için çok yararlı, teşekkürler! (Bence "dt <" olması gerektiğini düşündüm)
SPK

1
Bu teknik olarak doğru olsa da, satırın herhangi bir yerine atlamak yerine silmek istediğiniz ilk karaktere gitmeyi gerektirir. Ama gerçek doğrudur. :-)
lyonsinbeta

4

( silinecek ilk karakterdeki imleç ) v / <[enter] d

Bu çözüm ilk karakterde başlar, daha sonra görsel moda ("v") girer. Daha sonra bir sonraki başlangıç ​​ayracı ("/ <") arar ve aramadan çıkmak için enter tuşuna basın.

Bu noktada, görsel seçiminiz silinecek metni kapsayacaktır. silmek için d ("d") tuşuna basın.

Bunu bir grup etiket için yapmak zorunda kalsaydım, komutu kaydeder ve tekrarlanabilir hale getirmek için diğer bazı aramalarla birleştirirdim. Anahtar dizisi şöyle görünebilir:

[ dosyanın başlangıcında imleç ] qa /> [enter] lv / <[enter] dnq

sonra tuşuna basın:

20 @ bir

20 etiket için bunu yapmak


Eskiden c/<[enter]"Vim hayatımda" komutu çok kullanıyordum , ama şimdi bundan biraz pişmanım. Görüyorsunuz, diğer popüler editörler / IDE'ler için "Vi-mode" eklentilerinin çoğu bu özel komut türünü desteklemiyor. Onlar destekleyen cit, ci", ct<ve bununla birlikte. Tekrar öğretiyorum.
pilat

-1

Bayraklar arasında metin silmenin tersini yapmayı hedefliyorsanız, Vim-Surround'u yüklemenizi dstve surround etiketini silen çalıştırmayı öneririm

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.