Vim + tmux altındaki imleç şekli


14

Cygwin altında tmux içinde vim çalıştırırken nasıl farklı imleç şekillerine sahip olabilirim?

Tmux OLMADAN bu çizgiler istediğimi elde etmek için yeterli olacaktır:

let &t_SI = "\e[5 q"
let &t_EI = "\e[2 q"

Ama bir şekilde tmux'um onu ​​kırıyor - hangi vim modunda olursam olacağım imlecin blok şekli var.

Benim özellikleri:

  • Windows 7 x64
  • Cygwin x86
  • TMUX 1.9a
  • Vim 7.4.726 (+ cursorshape ile derlenmiştir)
  • terminal emülatörü: nane 1.1.3
  • Cygwin Terminali veya Cmder'de kullanılır (her iki şekilde de imleç şekilleri yalnızca TMUX olmadan çalışır)
  • echo $TERMbana verir screen-256color(TMUX ve dışında, çünkü export TERM=screen-256colorbenim.bashrc
  • .tmux.conf içerir:
    set -g default-terminal "screen-256color" setw -g xterm-keys on

Zaten başarılı olmadan ne denedim :

  • export TERM=xterm
  • export TERM=vt100
  • "sağ tıklayın çubuğu> Seçenekler> Görünüşler> İmleç" (imleci kalıcı olarak değiştirir, vim modları hala değiştirmez)

Vim '+ cursorshape' özelliği ile derlendi mi?
Alex Kroll

Terminal ayarlarını kontrol edin. Ve bu soru benzer görünüyor superuser.com/questions/634326/…
Alex Kroll

Hangi terminal emülatörünü kullanıyorsunuz? Eğer böyle bir şey denediniz let &t_SI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=1;BlinkingCursorEnabled=1\x7\<Esc>\\"ve let &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=0;BlinkingCursorEnabled=0\x7\<Esc>\\"?
jjaderberg

@jjaderberg iTerm'in kaçış dizisi? Sadece bazı uyarılarla iTerm'de çalışır : iTerm Doc > iTerm2, standart olmayan birkaç kaçış kodunu destekler. Bunlar tmux veya ekranda düzgün çalışmayabilir ve diğer terminal emülatörleri üzerinde bilinmeyen etkileri olabilir. Dikkatle ilerle.
Alex Kroll

1
Yumuşak bir kez daha kontrol ettik ve tüm sürümler seninki ile aynı ama nane seçeneklerinde $ TERM xterm-256colortmux içinde screen-256color. tmux 1.9 sürümüne sahiptir (ve 1.9a sürümünüz vardır). Ben vm tmux içinde başlattım vim -u NULL(-u NULL hiçbir yapılandırma anlamına gelir). İmleç şekli herhangi bir modda bloktur, ancak atadığımda t_SIve t_EIşekil verdiğimde bloktan (normal mod) I(ekleme moduna) beklendiği gibi geçiş yapar. Vim'i boş .vimrc ile, herhangi bir colorchemes ve eklenti olmadan başlatmayı deneyebilir misiniz?
Alex Kroll

Yanıtlar:


11

Sorun şu ki, tmux imleç değiştiren kaçış kodlarınızı terminal öykünücüsüne göndermiyor. İstediğiniz kaçış kodlarını tmux'a dış terminale geçirmesi gerektiğini söyleyen özel bir sırayla sarmanız gerekir.

Kaçış dizinizi sarmanız gereken dizi \<Esc>Ptmux;\<Esc> ... \<Esc>\\( Kaynak ). Bu ...sizin kaçış dizinizdir.

Bu nedenle, şu şekilde bir şey yapmayı deneyin .vimrc:

if exists('$TMUX')
    let &t_SI = "\<Esc>Ptmux;\<Esc>\e[5 q\<Esc>\\"
    let &t_EI = "\<Esc>Ptmux;\<Esc>\e[2 q\<Esc>\\"
else
    let &t_SI = "\e[5 q"
    let &t_EI = "\e[2 q"
endif

Terminal öykünücünüzü veya cygwin kullanmıyorum, bu yüzden bu kodu test edemedim. Ama yöntem benim için çalıştı (sadece terminalime uygun diğer kaçış kodlarını tamamladım).


Bu daha da iyidir - değiştirmeden çalışır .bashrc. Teşekkür ederim.
Kossak

3

$TERMOrtam değişkeninin doğru değeri çok önemlidir. Farklı olduğundan emin olun screen-256color. xterm-256colorÖrneğin olarak ayarlayın .

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.