Tmux veya ekran kullanarak vim modları arasında geçiş yaparken hafif bir gecikme


68

Tmux kullandığımdan Vim'deki ekleme moduna geçmek artık anlık değil. EscEkleme modunda bastıktan sonra , ek modundan çıkmak gerçekten fark edilir bir zaman alır. EscTuşuna ve ardından herhangi bir tuşa basıldıktan sonra anahtar hemen devreye girer ve ardından tuşa basılan komut Escçalıştırılır. Buna neyin sebep olabileceği hakkında bir fikrin var mı?

Vim yapılandırması, Vim'i tmux dışında çalıştırdığımda gecikme olmadığından sorun olmadığından, bu muhtemelen bir şekilde tmux ile ilgilidir. GNOME terminal btw kullanıyorum.

Ayrıca kayda değer Esc, tmux için anahtar bağlantıları tanımlayamadığım anlaşılıyor , planım şu şekilde bağlamaktı Esc:

bind Escape send-keys ^[

Ne yazık ki, Esctmux’un işe yaramadığı için her şeyi bağlayıcı görünüyor . Aynı problem ekranda da görülür.

Yanıtlar:


122

Adam sayfalarını tarırdıktan sonra tmux'un bunun için bir seçeneği olduğu ortaya çıktı. Aşağıdakiler ~/.tmux.confgecikme problemini düzeltir:

 set -sg escape-time 0

Bunun için tmux sunucunuzu yeniden başlatmanız ya da config için yeniden yüklemeniz gerekir. Bunu yapmak için source-file ~/.tmux.conf, tmux isteminden sorun .


2
Bunu nereden buldun? Hiçbir yerde kaçış zamanı bulamıyorum man tmuxve bu komut benim için çalışmıyor.
djeikyb

Sanırım sadece geliştirme sürümünde mevcut. Burada bulabilirsiniz: github.com/ThomasAdam/tmux
Ton van den Heuvel

4
Bu ayar benim için işe yaramadan önce tmux kill-server kullanmak zorunda kaldım. Teşekkürler!
Sam

1
Bu bana 10 hediye verebilmeyi diliyorum. Bunu vim'deki bir saatlik savaş zaman aşımından sonra buldum. Teşekkür ederim!
malvim

1
@ MichaelBrown, ben de yapıyorum ve hala bu problemi vuruyorum. Aslında önemli olmamalı, çünkü aynı tuşa basıp basmadığınıza veya ^ [ne olursa olsun, terminal emülatörüne gönderilir.
Ton van den Heuvel

4

Bu sayfayı bulduğumda çözmeye çalıştığım farklı ancak benzer bir sorunum vardı, bu yüzden bu cevabı arayan ve aynı şekilde bu sayfayı bulan başka birisinin yararı olması durumunda buraya yazacağım.

Sorun: bas modundaki vi modunun insert modundan komut moduna geçerken gecikmesi var

Çözüm: senin içinde ~/.inputrcdosyaya eklemek set keyseq-timeout nnerede nbazı düşük değer 0'dan büyük olduğu n500ms varsayılan, gecikmeye neden budur. Buradaki belgelere bakın .

Ayrıca, hangi modda olduğunuzu söyleyebilmek istiyorsanız, Dylan Cali'nin çatal çatalına bakın .


bu çok yararlı, ben onu 0.01şimdi ayarlayın ve şimdi onun hoş bir şekilde çok daha hızlı. Teşekkürler!

/etc/inputrcTüm kullanıcılar tarafından kullanılabilir duruma getirilmesi için eklenebilir .

1

İle başlayan bir haritalama kullanıyor gibisiniz ESC. ESCDüğmesine bastığınızda , vim, bir sonraki tuşun haritadaki anahtar olup olmadığını görmek için beklemek zorundadır. Değilse, hemen devam edebilir.

Vim konfigürasyonu terminale bağlı olabilir, bu nedenle tmux dışında gerçekleşmemesi pek bir şey ifade etmiyor. Vim, $TERMortam değişkenini sorgulayabilir ve değerine bağlı olarak farklı konfigürasyon seçebilir.

Gnome-terminal kullanımlar beri AFAIK, xtermdeğeri olarak $TERMdeğişken ve tmux kullanımlar screen, ben sadece kullanılan ayarlar için tüm vim yapılandırma dosyaları incelemeniz olacaktır $TERMdeğişken eşittir screen. Tahminim, sisteminizdeki bazı vim config dosyalarının ESC, terminal olduğunda ok tuşlarının ( karakterle başlayanlar) işlenmesi için eşlemeler oluşturmasıdır screen.

$TERMVim'e başlamadan önce tmux değişkenini geçici olarak değiştirerek test edebilirsiniz . Eğer kabuğunuz bash ise, vim olarak

TERM=xterm vim

tmux'ta ve sorunun devam edip etmediğini görün. Bunu bir çözüm olarak kullanmamalısınız, çünkü tmux ve xterm'in uçbirim özellikleri arasında farklılıklar olabilir ve bazı problemlerle karşılaşabilirsiniz.


Burada bazı iyi işaretçiler. Bash kullanıyorum, ancak ne yazık ki TERM=xterm vimsorunu çözmedi. Biraz daha derine inmem gerekecek.
Ton van den Heuvel

1

Ekranda bahsettiğimiz gibi, burada GNU Ekranında Escape tuşunun davranışını düzeltmek için bir çözüm. ( Buradan alın .)

Eklemek

maptimeout 5

için .screenrcdosyayı konfigürasyon dosyasında.

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.