Vim'de, hareketler dahil son normal mod komutunu tekrarlayın.


24

Vim'de .son normal mod komutunu tekrar edebilirim; Örneğin:

dd.

bir çizgiyi iki kez siler.
Ama eğer yazarsam

5j.

imleç 10 satır aşağı hareket etmiyor. Son normal mod komutunu, özellikle bir hareketi nasıl tekrarlarım?

Yanıtlar:


14

vimmaalesef bunu yapmaz. Yapabileceğiniz en iyi şey, sayma hareketi komutlarını tekrarlayan repmo.vim eklentisini yüklemektir .


10

vanilya vim'de bile yapılabilir, ancak uygulanabilirlik kullanım durumunuza bağlıdır, yani. Ne kadar sıklıkla tekrarlamanız gerekecek çünkü tekrarlanabilir hale getirmek için birkaç tuşa basılması gerekiyor.


Seçenek 1: bir komut modu işlemine dönüştürün

Örnek olarak 5 satır aşağı ilerleyerek şunları yapabilirsiniz:

  1. girmek :norm 5j, imleci 5 satıra indirir
  2. @:hareketi tekrarlamak için kullanın

:norm normal anlamına gelir, aşağıdaki herhangi bir dize normal modda tuş vuruşlarınız olarak kabul edilir


Seçenek 2: Makro kullan

  1. qa(Makroyu kayıt içine kaydeder a, kendi kaydınızı seçebilirsiniz qb, qc)
  2. 5j
  3. q (makroyu kaydetmeyi bitir)
  4. @aKayıtlı işleminizi tekrarlamak için ( aseçtiğiniz kayıt ismi ile değiştirin , örn. @b, @c)

Makro kurmak için daha fazla manevi güç gerektirir, ancak en son işlemler tarafından geçersiz kılmadan farklı kayıtları farklı işlemlerde saklayabilmeniz açısından daha fazla tekrarlanabilir.


7

Aslında son normal mod komutunu değil ., son değişikliği tekrarlar . Paul'un dediği gibi, hareketleri tekrarlamanıza izin veren bir eklentiye ihtiyacınız olacak.

" :help ." Bölümüne bakınız .


4

İle değişiklikleri tekrarlayabilirsiniz .. Hareketler ;komutla tekrarlanabilir . Bu komut yeni görünüyor ve diğer yanıtlarda belirtilen repmo.vim komut dosyasına benzer bir şey yapıyor.

Örneğin, bir sonraki saniyeye geçmek için ctuşuna basın 2fc. Sonra tekrar yapmak için, sadece yazın ;.


11
;yeni değil Bu standart bir vi komutu. Vi, son f/ F/ t/ Thareketin türünü ve hedef karakterini (ancak sayısal argümanı değil) hatırlar ve ;tekrarlar. Ancak diğer hareketleri tekrarlamıyor.
pyrocrasty

Bu, yapmak istediğim şeyi başardı! teşekkür ederim. ve açıklama için @ pyrocrasty teşekkür ederim!
Paul

0

Değiştirmek istediğiniz satırları seçebilir ve son normal nokta komutunu çalıştırabilirsiniz.

v5j .............. visual select next 5 lines
:'<,'>norm! .      normal mode execute over selection last command '.'
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.