İmleçten x karakterinin nci oluşumuna kadar sil


17

Ben kadar imleci silmek ve bir karakter ilk oluşumunu içeren biliyor x ile d/x<CR>veya v/x<CR>dilk seçim görmek ve daha sonra silmek istiyorsanız. Nasıl kadar imlecin bulunduğu yerden silebilirsiniz n inci oluşumu x ?

Örneğin, imleç ilk boşluktan sonra ise

yada yada yada
yada yada yada x
yada yada yada x
yada yada yada x

xx

ve sonucun olması gereken üçüncü x kadar kaldırmak için bir komut yazın :

yada
xx

Yanıtlar:


22

Yapabilirsin :

wd4/x<Enter>

Metninizin sol üst köşesinden başlarsanız

açıklama

  • w : sonraki kelimenin başına git
  • d : sil
  • 4/x<Enter> : x'in 4. oluşumuna kadar

Önceden kaç kez yapmak istediğinizi bilmiyorsanız, şunları da yapabilirsiniz: d/x<Enter>ve daha sonra .tekrarlamak için düğmesine basın


5
Ekstra ipucu: Bu aynı zamanda çalışır fve arkadaşları ( F, t, T, ;): örn 2fxEğer ikinci alacak xveya 2;son tekrar edecektir fiki kez.
Martin Tournoij

1
@Carpetsmoker: Bu yalnızca geçerli satırdaki harfler için çalışır.
Jürgen Krämer

5

Bunu yazarak yapabilirsiniz

<n>df<x>

nerede:

<n> is the number of occurrence of particular character
df<x> means delete till you find the occurrence of character x

0
<n>macro 

vim'de makro "n" sürelerini tekrarlamak için yaygın olarak kullanılır.

böylece x'in 1. tekrarına kadar silmek için kullanabilirsiniz 1dfx. Benzer şekilde, x'in 3. oluşumuna kadar silmek için kullanırsınız 3dfx.


1
Sanırım "makro" kelimesini kaçırdınız: vim'de bir makro, bir kayıt defterine kaydedilen bir anahtar dizisidir ve kaydınızın @xnerede xolduğunu arayın . Ne demek istediğiniz normal mod komutudur.
statox

Evet normal bir komut demek istedim. Ancak bu bir makro için de geçerlidir. Makrodan önce bir sayı ekleyerek makroyu n kez çalıştırabiliriz.
thenakulchawla

1
Evet bu doğru. Sadece <n>macromakrolar için vim'de standart bir gösterim olmadığını ve cevabınızın normal mod komutunu kullandığını belirtiyordum, kapil'inkiyle hemen hemen aynı.
statox

0

Verilen:

yada yada yada$
yada yada yada x$
yada yada yada x$
yada yada yada x$
xx$

burada $satırların belirtildiği uçlar ( :set listmod), eğer imleç yadailk satırda ikinci başlangıctaysa , önce hsilme işlemine dahil etmek için önceki boşluğa yedekleme yapmamız gerekir . O zaman sadece 4d/xEnter. Başka bir deyişle, önünde sadece bir sayı d/x. Sonuç tam olarak:

yada$
xx$
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.