Komut dizilerini tekrar (.) İçin bir araya getirme


10

Düşünmek:

apple
pear

İmlecinizi ilk satıra Ypgetirip şunu yazın:

apple
apple
pear

İmleci üzerine koyun pearhattı ve yazın .son komutu tekrarlamak için. Bu, yalnızca p(kombinasyonu değil Yp) tekrarlar ve şunu üretir:

apple
apple
pear
apple

.Son N komutlarını tekrar etmeyi söylemenin bir yolunu istiyorum . Üretmek 2.için kombinasyonu tekrarlamak gibi bir şey Yp:

apple
apple
pear
pear

Ofc çalışmaz - piki kez tekrarlar . Ancak fikir " son 2 komutun sırasını tekrarlamak " olacaktır.

qKomut sekanslarını kaydedebileceğimi biliyorum ve bunları tekrar ediyorum @@, ancak bu çözüm ideal değil, çünkü baştan beri planlamanızı gerektiriyor, oysa pratikte sık sık bir şeye kadar tekrarlamanız gerektiğini fark etmiyorsunuz Sen yaptın.

İstediğimi başarmanın bir yolu var mı?

Teselli ödülü: Yukarıdakiler mümkün değilse, son makro oynatmayı tekrarlamanın bir yolu var mı? Örneğin, @@son makamı oynatmak için yazdıysam , bir .sonrakinin @@tekrar yazmaya eşdeğer olmasını isterdim - ki bu değil (örneğin, sonucu @@bulunduğunuz çizgiye bağlıysa)


Sorununuzun ilk kısmı için bir çözüm bilmiyorum, ancak ikinci kısım için bu eşlemeyi deneyebilirsiniz: nno <silent> @@ @@:sil! call repeat#set('@@', v:count1)<CR>Ancak çalışması için şu eklentiyi yüklemeniz gerekir: github.com/tpope/vim-repeat
user9433424

Yanıtlar:


4

Vim yalnızca son çalıştırılan komutu saklar ve yalnızca bu tarafından tekrarlanır .; Bence başka bir şeyin üstesinden gelmek zor olurdu.

YpKomboyu tek bir varlık olarak tekrarlamanız gerektiğini düşünüyorsanız, tek bir komut yapmanız gerekir. Tim Pope'in repeat.vim eklentisi , bunu özel eşlemeler için kolayca yapmanızı sağlar. Tabii ki, eşleme için kısa bir anahtar [sıra] seçerseniz, bunu hızlı bir şekilde (yerine .) yeniden yazabilir ve hatta repeat.vim entegrasyonundan kaçınabilirsiniz.

BTW, benim LineJuggler eklentim]d mevcut satırı çoğaltmak için bir eşleme sağlar ve repeat.vim ile tekrarlamayı destekler.


2

In Yp, tekrarlamak için tek "değişiklik" dir p. Ben davranışını değiştirmek için biliyorum tek yolu .normal modda eklemektir yiçin cpoptionsopsiyon:

set cpoptions+=y

bu da son değişikliği ve son değişikliği tekrarlamanızı sağlar.

Ama bu sorununuzu değiştirmez, çünkü Yphala iki komuttur: bir yank ve ardından bir değişiklik.

Önemsiz bir komut dosyası olmadan istediğinizi elde edebileceğinizi sanmıyorum. Eğer bakmak mı vim.org ait komut bölümüne ?


1

mapBu etkiyi elde etmek için sık sık kullanıyorum . Örneğin:

map <F12> Yp

Daha sonra F12art arda düğmesine basıldığında YpYpYpvb. Yürütülür . Her yapıştırma işleminden sonra bir sonraki satıra geçmek istiyorsanız Yp+bunun yerine bir tuşu eşleyin.


1

RepeatLast eklentisi (kendi @joeytwiddle tarafından) dikkat çekici bir mekanizma, yaptığınız her şeyi bir makro olarak kaydetmek için kutsal olmayan yöntemle sadece bu işlevselliği sağlar .

Ben size komutları (eğer varsayılan kullandığınız varsayarak dizisini kullanabilirsiniz açıklayan düzenleme yapma, doğru belgeleri okuyorum eğer, yeni eşleştirmeleri bir dizi sağlar, ancak <leader>bir \):

  • YpYank ve hattı yapıştır / yapıştır apple,
  • jİmleç şimdi çizgide olacak şekilde bir satır aşağı gitme pear,
  • \Djkomutu unut ,
  • 2\.İki komutu tekrarlayın Yvep

Gerçekten kutsal olmayan! Ama tutkuyu takdir ediyorum.
Jonah
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.