Tuşunu basılı tutarken bir eşleme nasıl tekrarlanır


11

Benim de var .vimrckolayca bölünmüş pencereleri yeniden boyutlandırmak için bazı basit eşleştirmeleri:

noremap <Leader><UP>    <C-w>+
noremap <Leader><DOWN>  <C-w>-

Oldukça iyi çalışıyor ancak örneğin 10 satırlık pencereyi yeniden boyutlandırmak istediğimde Leader+ UP10 kez basmam ve bırakmam gerekiyor .

Tuşlara basılırken bu eşlemeyi nasıl tekrarlayabilirim? İstediğim Leader+ tuşuna UPbastığımda eşleme kısa bir süre sonra uygulanacak, tuşlar basılı tutulurken bir kez daha uygulanacak.

Not:<C-w>+ Bir sayımla önek eklemenin mümkün olduğunu biliyorum ve eşlemede sabit kodlayabilir veya eşleştirmeyi kullanmadan önce bir sayı girebilirim, ancak bunu yapmak istemiyorum.

Not2: Pencereleri yeniden boyutlandırmak için popüler bir eşlemenin kullanmak olduğunu +ve -birkaç kez daha kolay basılabilen tuşları kullanmak olduğunu biliyorum, ancak bunu yapmak için bu tuşları kullanmak istemiyorum.

Yanıtlar:


14

Bir ... Vim alt moduna girmeyi deneyebilirsiniz ! Sizin durumunuz için böyle bir şey:

call submode#enter_with('grow/shrink', 'n', '', '<leader><up>', '<C-w>+')
call submode#enter_with('grow/shrink', 'n', '', '<leader><down>', '<C-w>-')
call submode#map('grow/shrink', 'n', '', '<down>', '<C-w>-')
call submode#map('grow/shrink', 'n', '', '<up>', '<C-w>+')

Bu, alt modda Leader-Upveya ile Leader-Down(aynı zamanda pencereyi bir kez büyüyecek / küçülten) gireceğiniz anlamına gelir ve daha sonra - alt moddan çıkana kadar pencereye yalnızca büyümek / küçültmek için basmanız Upveya Downküçültmeniz gerekir.

Zaman aşımı sorunları için, ancak devre dışı bırakmak için yardıma da bakın:

"disable submode timeouts:
let g:submode_timeout = 0

... yani , veya altından başka bir tuşa basana kadar Upveya vuruncaya kadar bu alt modda süresiz olarak kalacağınız anlamına gelir .DownEsc

Aaand, bir sonraki faydalı ipucu:

" don't consume submode-leaving key
let g:submode_keep_leaving_key = 1

... farklı bir tuşa basarken doğrudan sonraki komutlarınıza geçmenizi sağlar. Örneğin, pres :hem altmodda bırakacaktır ve komut satırını açın.


Size çözüm denedim ama işe yaramıyor: <kbd> Lider </kbd> + <kbd> YUKARI </kbd> tuşuna bastığımda mesajım var --submode: grow/shrink --ve pencere tek bir satırla yeniden boyutlandırıldı ama komut ' t tekrar edildi. Ben g:submode_keep_leaving_keyve g:submode_timeout0 veya 1 4 kombinasyonları ile denedim . Yanlış bir şey yaptım emin değilim. Genellikle bir terminalde vim kullanıyorum ama şimdilik sadece Windows'ta gVim ile test edebilirim ama bir şey değiştirdiğinden emin değilim.
statox

2
Komut otomatik olarak tekrarlanmaz, yine de gerektiği kadar Upya da Downkendinize vurmanız gerekir (ancak Leaderönce basmak zorunda kalmadan )
VanLaser

Oh şimdi kodu daha iyi anlıyorum! Mükemmel çalışıyor teşekkürler!
statox

2
Mükemmel cevap ve şaşırtıcı eklenti! (Not: Yukarıdaki komutları bilgisayarınıza eklemeden önce vim-submode eklentisini yüklemeniz gerekir ~/.vimrc.)
weibeld

1

İle winresizer , vurmak Ctrl- eve uzak boyutlandırmak!

Normal hjkl tuşlarını (ve belki de ok tuşlarını) kullanırsınız.

Yeniden boyutlandırmayı "kabul edebilir" veya "iptal edebilirsiniz".

Ayrıca pencereleri değiştirdiğiniz bir hareket modu ve içinde bulunduğunuz pencereyi değiştirdiğiniz bir odak modu da vardı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.