Yuvalanmış bir makroyu nasıl kaydedebilirim?


11

Bir makro içinde bir makro kaydetmek istiyorum, şöyle:

qa
    [ first macro ... ]
    qb
        [ second macro ... ]
    q
    [ some more stuff, involving @b ... ]
q

Ancak, ikincisi qilk makronun durdurulması için bir istek olarak ve geri kalanı komutlar olarak yorumlanır.

Bir makro içinde ikinci bir makro kaydetmeye başlamanın bir yolu var mı?

Değilse, bir makro içindeyken belirli bir tuş vuruşu dizisini tekrarlamanın istenen etkisini elde etmenin başka bir yolu var mı?


1
Önce makroyu bsonra makro açağrısını kaydedemez @bmisiniz?
statox

@statox Sorun, byıkıcı etkilere sahip olmasıdır, bu yüzden önce kayıt yapamıyorum (kaydetmek istemiyorsam, ubirkaç kez basın ve sonra kaydetmeye başlayın a).
Kapı Tokmağı

1
Bunun en iyi çözüm olduğunu düşünüyorum. Ayrıca, başka bir arabellekte ( enew, kayıtta bd) kaydedebilir veya bdosyanızda makronuzun içeriğini yazarak ve ardından karakterleri kayıt defterine yerleştirerek "kaydedebilirsiniz" "by.
statox

Yanıtlar:


10

AFAIK, qx...qtek bir çekimde iki makro kaydedemezsiniz . İhtiyaçlarınız için, makro oluşturmak zorunda bbiriminin by qb....qardından qa...@bq.

"Kaydetmek" bistemiyorsanız, let @b='whatever'o @bzaman makroyu tekrar oynatabilirsiniz . Örneğin , "arabelleğe" kaydetmeden geçerli arabelleğinizin tüm içeriğini kaldırmak için let @b='ggdG'bir makro tanımlayın b.

Sorunuzla ilgili olmayabilecek bir makro tanımlama hilesi var. Özyinelemeli makro, iç içe makro değil. Yani, şunları yapabilirsiniz:

qa..whatever..@aq

bu, makroyu tekrar tekrar yürütür a. Makroyu kaç kez tekrarlamak istediğimizi bilmediğimizde bazen yararlıdır. Çünkü hata oluştuğunda, makro oynatımı otomatik olarak durur. 999@aÖrneğin kaydeder .


1

Tuş vuruşlarını makro @ a'ya kaydetmek, kayıt yapmak için bu tuş vuruşlarına karşılık gelen metni sormakla aynı şeydir. Bir şey bir kayıt defterinde saklandığında, onu koyabilir veya makro / tuş vuruşları olarak çalabilirsiniz. Böylece @a yoluyla bir makro kaydetmeye başlayabilirsiniz qa, daha sonra makro kaydederken, b'yi kaydetmek için belki de benzer bir şey kullanarak bir metin çekin "bye. Tek yapmanız gereken, yazmacı belirtmediyseniz, yazdığınızdan farklı bir kayıt defterine kopyalamaktır. B. Şimdi b kaydında bazı metinler bulunduğuna göre, bu metni tuş vuruşları olarak tuşa basarak oynatabilirsiniz @b. Bunu @a makrosu hala kaydedilirken bile yapabilirsiniz. Başkalaşım yok!

Bunun ana dezavantajı, istediğinizi yapan bir vimscript işlevi yazmak ve daha sonra belki de bir makro kaydı sırasında çağırmak daha kolay olacaktır. Makroların güzelliği, kaydederken kaydettiğiniz şeyin etkisini görebilmenizdir, ancak bu meta makro kayıt tekniği bunu biraz uzaklaştırır.

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.