Son eylemi (.) Bir makroya kaydet


9

Kullanım Durumu

Normal moddayım. Açıkça bir makro kaydetmeyi düşünmedim, ama tek bir komut değişikliği yapıyorum. Şimdi nokta kullanarak bu işlemi tekrarlayabilirim.

Artık her seferinde tüm komutu yazmak yerine daha sonra kullanmak üzere bir makroya kaydetmenin yararlı bir eylem olduğunu anlıyorum. Nokta kullanarak bu komuta ihtiyaç duyan tüm değişikliklere katılabilirim veya düzenlemeye devam edebilir ve daha sonra bir makroya kaydederek bu komutu kullanabilirim.

İkincisi yapmak istediğim şey, ama bunu yapmanın en kolay yolu kolay değil - değişikliğim geri alın, bir makro kaydetmeye başlayın ve gerekli değişikliği yapmak ve makroyu kaydetmeyi durdurmak için komutu yeniden yazın.

Şimdiye Kadar Denediklerim:

Makroda nokta kaydetme, noktanın gerçekleştirdiği değişikliği değil, noktayı kaydettiği için çalışmaz. (Örneğin, noktaya kaydedilen komutun, d5wbir makro kaydetmeye başlar ve makroyu her çalıştırdığınızda 5 kelimeyi sileceğini düşünerek eylemi gerçekleştirirseniz, bunun gerçekleşmeyeceğini varsayalım. o nokta yapacağım makro ve değil komut d5wsize makro kaydettikten sonra diğer bazı değişiklik yapılmasaydı bu bu araçlar -. kullanılarak silme 3 kelime söylemek d3wmakroyu çalıştırdığınızda ve gerçekleştirdiğiniz son şansımdı, o zaman 3 silecektir kelimeler ve 5 değil, çünkü sadece çalışıyor .)


Hem ne yapmak istediğinizi hem de neden bir makro ile olan her şeyi yapmadığınızı anlamak için uğraşıyorum.

1
@DrEval OP , normal mod komutunu gerçekleştirdikten sonra bir makroya kaydetmeleri gerektiğini fark eder ve makroyu kaydederken tekrar yazmak zorunda kalmaz.
Zengin

Yanıtlar:


2

Vim, normal mod komutlarınızın geçmişini tutmaz. Normal mod geçmişinizin geçmişini saklamak istiyorsanız, bunu bir dosyaya kaydetmek için aşağıdakileri kullanabilirsiniz: https://vi.stackexchange.com/a/587/13848

Normal mod komutları genellikle kısadır, bu yüzden insanlar normal modda yazıp makro oluşturmaya çalışmazlar. Ancak, normal mod komutlarından makrolar oluşturmak istiyorsanız, bunu bir Exmod komutuna dönüştürebilir ve daha sonra @wmmso'nun işaret ettiği gibi bir makroya kaydedebilirsiniz. Bunu normkomutu kullanarak yapabilirsiniz . Geçerli imleç konumundan başlayarak 2 sözcüğü silmek ve Exmod kullanımında normal mod komutunu kullanmak istiyorsanız :norm d2w. (Ref: http://vimdoc.sourceforge.net/htmldoc/various.html#:norm , Menzil içinde normal komutu yürüt )

ExKarmaşık bir komutsa, bir mod komutu kullanmak daha iyidir , çünkü tam komutu bir arabellekte yazmanıza izin verir, gerçekten doğru olduğundan emin olun ve komut satırı geçmişine de kaydeder.

Artık eski mod komutunuzu eski modda kullandığınıza göre q:, komutunuzu geçmiş gibi kullanarak da tarayabilir ve daha sonra "ay$komut satırını içeren satırda bir makroya kaydetmek için kullanarak bir kayıt defterine kopyalayabilirsiniz . Sonra makroyu çalıştırmak istediğinizde,@a


Yine de komut satırına normal mod komutunu nasıl yazardınız? mesela d2w?
Peeyush Kushwaha

Cevaba bazı açıklamalar eklendi .. Bu yardımcı oluyor mu?
alpha_989

0

":" kaydının içeriğini (az önce ne yaptınız) başka bir kayda kopyalayın, örn.

:let @a = @:

kullanarak tekrar yürütebilirsiniz

@a

7.4 sürümünde bu benim için işe yaramıyor. Kayıt :,:command-name-goes-hered2w
Peeyush Kushwaha

2
Bu çözüm yalnızca normal mod komutları için değil ex komutları için çalışır. Son normal mod komutunu tutan bir kayıttan habersizim. Yararlı olur
Steve
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.