"Bileşik" kelimeyi silmenin en kolay yolu?


20

"Kompozit" teknik terim değilse özür dileriz. Şunu demek istiyorum:

Hi, I-am-a-composite-word and we are not

Sadece bileşik kelimeyi silmek istiyorum. Komut modunda, imleci Iüzerine götürürsem dw, birkaç kez tekrarlarsam veya bir kez daha iyi yazıp dwardından birkaç kez .basarsam hile yapar. Ancak, çeşitli nedenlerle kendimi bunu gün boyunca sık sık yapıyor, böylece daha basit bir yol olup olmadığını merak ediyordum.

PS I ediyorum DEĞİL komutunu dikkate d9wbasit bir yolu olması. Uzun bir kelime ve tire dizisi saymak benim "daha basit" fikrim değil.

Yanıtlar:


33

Kompozit bir kelime olarak adlandırdığınız şey aslında bir WORD (bir kelimeye karşı). Okuma :h wordve yardımcı :h WORDolmalı:

                            *word*
A word consists of a sequence of letters, digits and underscores, or a
sequence of other non-blank characters, separated with white space (spaces,
tabs, <EOL>).  This can be changed with the 'iskeyword' option.  An empty line
is also considered to be a word.
                            *WORD*
A WORD consists of a sequence of non-blank characters, separated with white
space.  An empty line is also considered to be a WORD.

Burada aradığınız şey , kelimenin dWüzerinde olduğunuzda Iveya diWkelimenin herhangi bir yerinde olduğunuzdadır.

Belki gelecekte de okumalısınız :h 'iskeyword'.


1
cevap için teşekkürler: işe yarıyor. Tanım Apropos: A WORD consists of a sequence of non-blank characters, separated with white space. Separated with white spaceWORD'ün başka kelimelerle veya beyaz boşluklu WORDS ile ayrıldığı anlamına gelir, değil mi?
DeltaIV

2
@DeltaIV Evet in-this-sentence there are four"WORDs4 kelime in-this-sentence, there, areve four"WORDs. Bu kullandığınızda görmek kolaydır wve Wya bve Börneğin hareketleri. Boşluğun "normal" bir boşluk veya sekme karakteri olabileceğini unutmayın.
statox

1
Bu cevap, okuyucunun çözümü bulmak için orta paragrafa geçmesini zorlamak yerine "Burada aradığınız şey dW .." ile başlıyorsa daha yararlı olacaktır.
Mark Meuer

9

Diğer bir genel çözüm ise dt ( t[karakter] 'e silme anlamına gelen "karakterinden sonra boşluk) kullanarak boşluk karakterine kadar silmektir. Bu genellikle dt:benzer ve benzer şeyler için de yararlıdır .


ne gelmez dt: mi?
DeltaIV

1
Aynı cevabı gönderdiğimde <code>dt </code>, sonuna boşluk eklemek için kullanabileceğinizi öğrendim .
BurnsBA

2
@DeltaIV Aslında ihtiyacınız olan şey okumak :h motion.txtve kullanmak vimtutor, Vim
statox'un

@statox Eskiden VIM'de yetenekliydim ... 10 yıl önce :-) vimtutorçok ilginç geliyor. Uzak sunucuda yüklü olduğundan emin değilim (hatta manyardımcı program yüklü değil gibi görünüyor ). Ancak, kontrol edeceğim: vimPaketle birlikte otomatik olarak yüklendiyse , kullanabileceğim şanslar yüksektir.
DeltaIV

1
@BurnsBA Teşekkür ederim, bu site için gerçekten yararlı. Btw. başkalarından gelen yayınları düzenleyebilir ve hatta düzenlemeniz akran inceleme sürecinden geçerse +2 itibar kazanabilirsiniz. Ama bu şekilde, ben de yeni bir şey öğrendim :-).
allo

4

Kullanmaya devam etmek dwve benzerlerini yapmak ve ayrıca bir kelimeyi çift tıklamakla çalışmasına izin vermek istiyorsanız,

set iskeyword+=-

senin için .vimrcekler -bir kelime karakteri olarak.

Örnek:

ab-cdGörsel vurgularda herhangi bir karakteri çift tıklatma ab-cd.


Geçiş yapmakta iyiyim dW, ancak çözümünüz de oldukça güzel çünkü görsel modu da etkiliyor sanırım. Demek istediğim, değiştirerek iskeyword, çift tıkladıktan sonra dI tuşuna basarak silebilirim ab-cd. Sağ?
DeltaIV

Ya da belki vçift ​​tıklatmak yerine ile görsel moda geçmeliyim. Sağ?
DeltaIV

1
@DeltaIV, iskeyword'ü değiştirerek, herhangi bir yöntemi kelime nesneleriyle kullanabilirsiniz (iw veya aw dahil, fare veya görsel mod kullanmaktan çok daha basit)
D. Ben Knoble

4

Unutma f(find) ve tkomutlar (kadar). Muhtemelen sadece dt ya da df (sonunda boşluğa dikkat edin).

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.