vim geriye dönük hileleri silme


119
  • Soldaki bir kelime nasıl silinir? Başka bir deyişle, imleç sonunda durduğunda kelimeyi silin.
  • Satırın başına kadar olan karakterler nasıl silinir?
  • Soldaki ilk boşluktan nasıl silinir?

  • Kelime silmeyi içeren başka numara var mı?

Yanıtlar:


163

Genel olarak, d <motion>, <motion> 'dan sonra mevcut konumdan bitiş konumuna silinecektir. Bunun anlamı şudur ki:

  1. d <sol Ok> mevcut ve sol karakteri siler
  2. d $ mevcut konumdan satırın sonuna kadar silecek
  3. d ^ mevcut geriye doğru ilk beyaz boşluk olmayan karaktere doğru silecektir
  4. d0 şu anki geriden satırın başına kadar silecek
  5. dw geçerli kelimenin sonuna kadar (sondaki boşluk dahil) siler
  6. db, geçerli kelimenin başına kadar geçerli olanı siler

'D' komutuyla birleştirebileceğiniz her şeyi öğrenmek için bunu okuyun .


2
dbHatırlamakta zorlanmanız durumunda kullanabileceğiniz başka bir kullanışlı kısayol : 5. dw or d<ctrl+rightarrow>ve 6. db or d<ctrl+leftarrow>
Crisboot

7
Bunun yerine d<leftArrow>do yazmak dhyerine, hsola hareket etmenin anahtarı olduğu için
Dylanthepiguy

4
Bu cevap neden kabul edildi? d <leftArrow> (ve dw dışında aşağıdakilerden hiçbiri), OP'nin istediği gibi bir imlecin altındaki bir karakteri silmez.
listerreg

74

Bu senaryoda birçok kez bulundum. 10. satırdaki tüm boşluklardan kurtulmak istiyorum, böylece virgülden sonra 9. satıra katılır.

görüntü açıklamasını buraya girin

Bu temelde VIM'de basit bir hat birleşimidir.

kJ hile yapar (aşağıya bakın)

Vim Birleştirme Hatları


10
Bunun için her yere bakıyordum!
functionvoid

2
haha, bunu istiyorum ve Google'da nasıl tarif edeceğime dair hiçbir fikrim yok. Aşağı
Thai Tran

1
Bunu kaç kez elle yaptığıma inanamıyorum. Bu tam olarak aradığım şey, TEŞEKKÜRLER!
tobiasandersen

1
tam olarak aradığım buydu. Vim her gün aklımı uçuruyor
singmotor

4
Bunun açıklaması şudur: k= Yukarı, J= Aşağıdaki satırı aralarında bir boşluk olacak şekilde mevcut olanla birleştirin. Ayrıca kgJboşluk bırakmadan da katılabilirsiniz. gJ= Arada boşluk bırakmadan aşağıdaki satırı birleştirin. Cheatsheet ile: vim.rtorr.com
KhalilRavanna

31

3. noktayı cevaplamak diwve dawmükemmel.


4
Son harfteyken bir kelimeyi geriye doğru silmek için iki karakterli komutların olmaması üzücü buluyorum, çünkü notepad ++, gedit vb. Gibi standart editörlerde CTRL + Backspace'i kolayca kullanabilirsiniz ... bunun dışında vim mükemmel.
itmuckel

3
@ roggan87 Bir kelimenin dbson harfindeyseniz, son harften önceki harfleri siler ancak yine de son harfi bırakır.
Prashanth Chandra

2
Bu komutların ortasında ne yaptığını ive ne yaptığını açıklayabilir misin a? Baştaki d"sil" olduğunu biliyorum ve sonun w"kelime" olduğunu varsayıyorum .
Carl G

1
@CarlG En iyi açıklama içeride :help text-objects. Baş paragraf çok kısa ve bence onu çok iyi anlatıyor.
Randy Morris

5
<kbd> i </kbd> "iç" dir ve <kbd> a </kbd> "bir kelime" de olduğu gibi "a" dır. İlki, çevreleyen beyaz boşluğu içermezken, ikincisi, varsa, sondaki beyaz boşluğu içerecektir, aksi takdirde önceki beyaz alanı içerecektir. Çok yardımcı oldu, teşekkürler.
Carl G

25

Ekleme modunda:

  • ^ w
  • ^ u
  • kafamdan cevap veremiyorum ;-)

Aksi takdirde:

  • dw
  • V0X
  • kafamdan cevap veremiyorum ;-)

Vim'de Ekle modunda kelimeyi silebileceğimi bilmiyordum. Bu çok yardımcı oluyor.
Đỗ Tiến

18

Komut modunda:

  1. bdw, geri kelimeyi sil.
  2. d^(boş olmayan d0ilk karaktere) , (ilk karaktere)
  3. BdW (ilk boşluğa git, sonraki boşluğa sil)

(Topluluk wiki, hacklemekten çekinmeyin.)


14
  1. db (imleç kelimenin arkasındaysa) veya bdw
  2. d0(veya d^ilk boş olmayan karakteri silmek istiyorsanız)
  3. dEveya dtSpaceilk boşluğa veya bir d/\sEntersonraki beyaz boşluk karakterine kadar silmek için.

Düzenle

Soru, soldaki ilk boşluk karakteri 3'ü silecek şekilde değiştirildiğinden, cevabım şu şekilde değişmelidir:

  1. dBveya dShiftTSpaceilk boşluğa geri silmek için veyad?\sEnter önceki beyaz boşluk karakterine .

Görmek:

:help motion.txt
:help WORD

3 numaraya iyi çağrı. HERHANGİ bir boşlukla nasıl başa çıkacağımdan emin değildim. DF <SPACE> 'nin <SPACE> dahil olmak üzere sileceğini ve dT <SPACE>' nin <SPACE> alanını orada bırakacağını belirtmekte fayda var.
Mark Biek

Gibi bir şey aramak için buraya geldi bdw. Kalan karakter (orijinal olarak imlecin altında olan) dbbeni rahatsız etmeye devam etti.
Deiwin

8

Cevapların hiçbirinin tam olmadığını hissediyorum:

Genel olarak, genellikle kullanarak d<motion>ve nadiren kullanarak bir silme işlemi başlatırsınız x.

Not: NBelirtilmediğinde, sanki davranır N=1(tek bir karakteri siler)

Ayrık karakterler:

<N>x - Sağdaki N karakteri sil

d<N><left-arrow> - Soldaki N karakteri sil

d<N><right-arrow> - Sağdaki N karakteri sil

Kelime sınırları:

Not: 1. önceki / sonraki kelime, imlecin altındaki kelimedir

d<N>b - Önceki N'ninci kelimenin başından mevcut konuma kadar sil

d<N>e - Geçerli konumdan sonraki N'inci sözcüğün sonuna kadar sil

d<N>w- Aynı d<N>eancak sondaki boşluk dahil

diw - İmlecin altındaki tüm kelimeyi sil

daw- Aynı diwancak sondaki boşluk dahil

Çizgi sınırları:

d0 - Satırın başından mevcut konuma kadar sil

d^ - İlk boşluk olmayan karakterden geçerli konuma kadar sil

d$ - Mevcut konumdan satırın sonuna kadar sil


1

/ <CR>x

(bir boşluk arayın, oraya gitmek için enter tuşuna basın, silmek için x)

Bunu yapmanın daha sihirli bir yolu olabilir ama ben bilmiyorum.


Soldaki ilk boşlukları silmek istiyorsanız,? benim örneğimde / yerine.
brettkelly
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.