Vim'nin tmux ile düzgün çalışması için nasıl edinilir?


19

Birlikte nasıl oynayacağınızı vimve tmuxoynayacağınızı anlamaya çalışıyorum .

Sorunum: Ben kullandığınızda xterm-256coloralıyorum vimgüzel iş ama arka plan düzgün hale gelmez.

Bunu kullanarak düzelttim screen-256color. Bu hoş görünüyor ama Ctrl + arrow keys(ekleme moduna geçip 4 satırı siliyorlar). Sekmeleri değiştirmek için bu eşlemeleri kullanmak istiyorum vim.

Bunu nasıl çalıştırabilirim?

Yanıtlar:


8

Run catiçinde tmuxve basın söz konusu tuşları oluşturdukları çıkış kodları öğrenmek için. Benim için bu verir ^[[Dve ^[[C. Ardından bu kaçış kodlarını doğrudan eşleyin.

nnoremap ^[[D gT
nnoremap ^[[C gt

Burada, vim ^[tuşuna basarak ekleyebileceğiniz bir kaçış karakteri <CTRL-v><ESC>.


Bu benim vim davranışını değiştirmedi.
outsmartin

Tmux içinde kedi başlattığınızda ve tuşlara bastığınızda ne yazdırılır?
Mika Fischer

^ [[1; 5C ve ^ [[1; 5D. İyi fikir, bunları nasıl alacağımı bilmiyordum. Sadece denedim. İşe yarıyor! Teşekkür ederim.
outsmartin

Harika. Doğru kaçış kodlarını elde etmek için yöntemi dahil etmek üzere cevaplarımı düzenledim.
Mika Fischer

22

En iyi işlevsellik için doğru şekilde ayarlanması gereken birkaç yapılandırma düzeyi vardır.

  1. Tmux'u sekansları tanıyacak şekilde yapılandırın . Tmux'u başlatmadan önce , terminal öykünücünüze (ör. xterm-256color) Uygun bir TERM değeri ayarlayın . SÜRE ortam değişkeni tarafından tanımlanan terminfo Veritabanına giriş söyler tmux tuşları ok modifiye için dizilerini tanıyan nasıl (kullanıcı tanımlı yetenekleri { kUP, kDN, kRIT, kLFT} {, 3.. 7}).
  2. Dizileri oluşturmak için tmux'u yapılandırın . xterm-keysOturum seçeneğini TERM tarafından tanımlandığı bir dizi aldığında tmux'un kendi xterm tarzı dizisini oluşturacak onşekilde ayarlayın . Sizin :~/.tmux.conf

    set-option -g xterm-keys on
    
  3. Tmux içinde çalışan programları , dizilerinin çoğunu kullanacak / bekleyecek şekilde yapılandırın . Tmux (örneğin ) screeniçinde tabanlı bir TERM kullandığınızdan emin olun . Bu iç çalışan programları söyler tmux nasıl kontrol etmek tmux neler tepkiler onlar beklemesin ‘ın terminali (yeniden) öykünme ve tmux .screen-256color
  4. Ne yazık ki, screentabanlı terminfo veritabanı girişleri genellikle değiştirilmiş ok tuşları için herhangi bir dizi tanımlamamaktadır (yani kUP, et cetera olmayabilir ), bu nedenle tmux içinde çalışan programlar bu dizileri beklemeyi bilemeyebilir. Bu tuşları tanımak istediğiniz programları el ile yapılandırmanız gerekir. In Vim aşağıdaki konularda bu koyabilirsiniz ~/.vimrc:

    if &term =~ '^screen'
        " tmux will send xterm-style keys when xterm-keys is on
        execute "set <xUp>=\e[1;*A"
        execute "set <xDown>=\e[1;*B"
        execute "set <xRight>=\e[1;*C"
        execute "set <xLeft>=\e[1;*D"
    endif
    

    -Variant kullanmanın normal ok tuşlarınızın çalışmasının durmasına neden olduğunu fark ederseniz , varyantları x(örneğin , et cetera <Up>yerine <xUp>) kullanmadan kullanmak xisteyebilirsiniz.

    Bu gibi tuşları tanımlamanın avantajı, değiştirici kombinasyonlarının her birini ayrı olarak eşlemeniz gerekmemesidir (Shift, Control, Contol + Shift, Meta, Meta + Shift, Meta + Control, Meta + Control + Shift); *Tüm ilgili dizileri (bkz işlemek için özel bir yorumunu alır :help xterm-modifier-keys).

  5. Ardından, sabit kodlanmış dizileri yerine anahtarları eşleyebilirsiniz:

    nnoremap <C-Right> gt
    nnoremap <C-Left> gT
    

1
Hey, bu mükemmel çalıştı!
Pablo Olmos de Aguilera C.1

2

Burada açıklandığı gibi , terminal seçeneğini temizleyerek Arka Plan Rengi Silme'yi (BCE) devre dışı bırakın (Vim'de t_utçalıştırın :set t_ut=ve terminalin ekranını yenilemek için Control+ tuşuna basın L), böylece tmux ve GNU ekranı içinde Vim kullanıldığında renk düzenleri düzgün çalışır.

Bu şekilde, uygun Vim renk şeması oluşturmayı da alırken, uygun tuş algılaması için TERMdeğerinizi koruyabilirsiniz xterm-256color! :-)


1

set t_Co=256~ / .Vimrc içindeki ayar hiç yardımcı olur mu? Bu sadece bir renk ayarıdır, ancak bazı sorunların giderilmesine yardımcı olabilir.

ctrl+Arrow~ / .Vimrc içindeki anahtarları da yeniden haritalayabilirsiniz ...

Düzenleme: ctrl+ArrowGNU ekran oturumunda denediniz mi? Sanırım bu senin sorunun.


Göründüğü ve XTerm-256color ile ekranda cezası işleri
outsmartin

seti t_Co = 256 lutfen yapılır
outsmartin

Herhangi biri yardımcı oldu mu?
Sardathrion - Monica'yı

Ne yazık ki hayır. Remapign ctrl + arrow ile tam olarak ne demek istiyorsun? Ben vim sekmeleri değiştirmek için zaten remapped onları kullanın.
outsmartin

Bu şekilde eşlendi: map <C-Right> gt
outsmartin
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.