Showcmd ile komut geçmişi gösteriliyor


11

set showcmdVim kullanırken ekranın son satırında kısmi komutlar gösterir. Örneğin, Normal modda komutu yazarken dt.son satır gösterilir dtve sonra, vurduğunuzda .komut tamamlanır ve bu nedenle hiçbir şey gösterilmez.

Tam komutları göstermenin bir yolu var mı? Örneğin yazarken dt.gU(ilk dt.gösterilecektir; ve ikinci komutu yazmaya başladığınızda, ilk komut temizlenir, böylece sonunda yalnızca gU(görüntülenir.

Bu, örneğin GIF'leri göstermede yararlı olabilir; ve beklenmedik bir sonuçla karşılaşırsanız ne istediğinizi yazıp yazmadığınızı kontrol etmek için.


1
Tam komut nedir? dtO bekleyen şimdiki operatör çünkü gösterilmektedir. Bir hareket verildiğinde, artık bekleyen bir operatör değildir. Diyelim ki daha ileri gittik ve yaptık dt.gU(gu)daw. Tüm bunlar "bir tam komut" mu, yoksa dört tam komut mu, yoksa başka bir şey mi?
davidlowryduda

@mixedmath benim için 4 komut sayılır. Cevabın ikinci paragrafı ne demek istediğimi belirsizleştirmeye çalışıyor.
Gonçalo Ribeiro

2
Vim'in bakış açısından, dt.gU(2 komut vardır: dt. ve gU(.... Yani gerçekten istediğiniz bir tür komut geçmişi göstermek (Vim zaten "tam comamnds" gösteriyor).
Martin Tournoij

@Carpetsmoker, evet, istediğim bu olabilir. Soru başlığını düzenlediğiniz için teşekkür ederiz.
Gonçalo Ribeiro

3
Normal tarih üzerinde çalışan Vim kaynak kodunu araştırıyorum . Gelen src/normal.ckod çağrıları clear_showcmd()çeşitli yerlerde ( normal_cmd(), do_pending_operator(), end_visual_mode()). Ben showcmd_bufbu noktalarda bir dosyaya damping ile oynuyorum , hangi oldukça iyi görünüyordu, ama benzer şekilde Vim kaynak kodunu değiştirmeden ve yeniden inşa etmeden istediğinizi alamıyor emin olun. Tabii ki, bunu yapmak giflerinizi yapmak için uğraşmaya değer olabilir.
John O'M.

Yanıtlar:


9

Bunu normal bir Vim'de yapmanın bir yolunu bulamadım. Ancak, Vim'i yamalamak istiyorsanız, aşağıdakiler sizin için işe yarayabilir.

Çok basit yama (Vim-7.4.052'ye karşı uygulanan), normal bir komutun sonunda geçmişi temizleyen ekrana gerçek güncellemeyi devre dışı bırakır. Bunu showcmd_is_clear, ekranı güncellemeden önce ayarlanıp ayarlanmadığını döndürerek yapar . (alternatif olarak eğer ifadeyi açıklama ve sadece bir orijinal bırakabilir returnhattı. not : yama aşağıda çok iyi yapıştırın vermedi; elle bu uygulamak gerekebilir, sadece kısa bir tek satırlık olsa. not : Ben yaptım değil gerçek açıklama display_showcmd()seçilen hatları veya diğer muhtemelen diğer şeyler numarasının göstergesini güncellemek için görsel modda kullanılacak göründüğü için ben yoğun bu test etmedim..

--- src/normal.c    2015-02-14 00:21:23.286352257 -0500
+++ src/normal.c    2015-02-14 00:21:25.238352173 -0500
@@ -4029,6 +4029,7 @@
    /* Don't actually display something if there is nothing to clear. */
    if (showcmd_is_clear)
        return;
+   return;
     }

     display_showcmd()

Sonuç şuna benzer:

Yamayı gösteren ekran görüntüsü

Dikkat edilmesi gereken birkaç ilginç şey:

  • Bu gösterileri bile basit hareketler gibi j, k, bvb
  • xKomut aslında olur dlshowcmd_buf içinde.
  • Alt satırı değiştiren komutlar showcmd alanını ortadan kaldırır (örneğin, :komutu kullanarak veya ekleme moduna girerek (en azından kurulumumda))
  • Yakalama programı ", ben yazdıktan sonra birçok kontur kaydetmeyi durdurdu , ancak anahtar dizilim uzun vizede belirtilen yank için vim penceresinde görülebilir.
  • Oyuncularda gösterilmez, ancak escnormal modda vurma ^[showcmd alanında gösterilir

4

John çözümünün dışında -w, dosyaya yazdığınız tüm karakterleri kaydeden parametre kullanılarak basılan tüm vim tuş vuruşlarını göstermenin başka bir yolu daha vardır . Sorun şu ki, vim yalnızca Vim'den çıktığınızda tuş vuruşları yazıyor. Bu nasıl VimGolf çalışır.

Bunu çözmek için Kana Natsuno , seçeneğin arabelleğe alınmasını devre dışı bırakan bu tek satırlı yama ile geldi -w, böylece tuş vuruşlarının gerçek zamanlı akışına erişebilirsiniz. Sonra bunları okumak (mesela tail -f), ayrıştırma meselesidir ya da bunları durum çubuğunda ( ) görüntülemeyi deneyebilirsiniz :set statusline.

Gerçek zamanlı tuş vuruşları akışını elde etmek için Drew'un MacVim'in canlı akış tuş vuruşlarını kullanarak özel bir Vim yapısına göz atın.

Kaynak: Vimprint - Drew Neil blogunda bir Vim tuş vuruşu ayrıştırıcısı

Bu, video eğitimlerinde veya GIF'lerde Vim basılan tuş vuruşlarını göstermek istiyorsanız kullanışlıdı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.