Come far funzionare correttamente VIM con TMux?


19

Sto cercando di capire come giocare vime tmuxsuonare insieme.

Il mio problema è: quando uso xterm-256colorriesco vima lavorare bene, ma lo sfondo non viene visualizzato correttamente.

Ho risolto questo problema usando screen-256color. Sembra bello ma interrompe il Ctrl + arrow keys(vanno in modalità inserimento ed eliminano 4 righe). Voglio usare questi mapping invece di cambiare scheda vim.

Come faccio a farlo funzionare?

Risposte:


8

Corri catdentro tmuxe premi i tasti in questione per scoprire i codici di escape che generano. Per me questo dà ^[[De ^[[C. Quindi mappare direttamente quei codici di escape.

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

dove ^[è un carattere di escape, che puoi inserire premendo <CTRL-v><ESC>in vim.


Ciò non ha cambiato il comportamento del mio film.
outsmartin

Cosa viene stampato quando si avvia cat in tmux e si premono i tasti?
Mika Fischer,

^ [[1; 5C e ^ [[1; 5D. Buona idea, non sapevo come ottenerli. L'ho appena provato. Funziona! Grazie.
superando in astuzia il

Grande. Ho modificato il mio ansewer per incorporare il metodo per ottenere i giusti codici di escape.
Mika Fischer,

22

Esistono diversi livelli di configurazione che devono essere impostati correttamente per la migliore funzionalità.

  1. Configura tmux per riconoscere le sequenze. Prima di avviare tmux , impostare un valore TERM appropriato per l'emulatore di terminale (ad es xterm-256color.). La voce di database terminfo identificato dalla variabile di ambiente TERM dice tmux come riconoscere le sequenze per la modifica tasti freccia (le funzionalità definite dall'utente { kUP, kDN, kRIT, kLFT} {, 3.. 7}).
  2. Configura tmux per generare le sequenze. Impostare l' xterm-keysopzione di sessione in onmodo che tmux generi la propria sequenza in stile xterm quando riceve una sequenza identificata dal suo TERM. Nel tuo ~/.tmux.conf:

    set-option -g xterm-keys on
    
  3. Configura i programmi in esecuzione all'interno di tmux per utilizzare / aspettarsi la maggior parte delle sue sequenze. Assicurati di utilizzare un screenTERM basato su tmux (ad es screen-256color.). Questo dice ai programmi in esecuzione all'interno di tmux come controllare la (ri) emulazione terminale di tmux e quali risposte dovrebbero aspettarsi da tmux .
  4. Sfortunatamente, le screenvoci del database terminfo basate su spesso spesso non definiscono alcuna sequenza per i tasti freccia modificati (cioè potrebbero non avere kUP, eccetera), quindi i programmi in esecuzione all'interno di tmux potrebbero non sapere di aspettarsi tali sequenze. Sarà necessario configurare manualmente tutti i programmi che si desidera riconoscere questi tasti. In Vim , puoi metterlo nel tuo ~/.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
    

    Potresti voler usare le varianti senza x(cioè <Up>invece di <xUp>, eccetera) se scopri che l'uso della x-variant fa smettere di funzionare i normali tasti freccia.

    Il vantaggio di definire i tasti in questo modo è che non è necessario mappare ciascuna delle combinazioni di modificatori separatamente (Shift, Control, Contol + Shift, Meta, Meta + Shift, Meta + Control, Meta + Control + Shift); l' *ottiene l'interpretazione speciale per gestire tutte le sequenze correlate (vedi :help xterm-modifier-keys).

  5. Quindi puoi mappare le chiavi invece delle loro sequenze codificate:

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

1
Ehi, ha funzionato perfettamente!
Pablo Olmos de Aguilera C.

2

Come spiegato qui , disabilitare la cancellazione del colore di sfondo (BCE) deselezionando l' t_utopzione del terminale (eseguire :set t_ut=in Vim e quindi premere Control+ Lper aggiornare il display del terminale) in modo che le combinazioni di colori funzionino correttamente quando Vim viene utilizzato all'interno dello schermo di tmux e GNU.

In questo modo, puoi mantenere il tuo TERMvalore xterm-256colorper quanto riguarda il corretto rilevamento dei tasti e ottenere anche il corretto rendering delle combinazioni colori di Vim! :-)


1

L'impostazione set t_Co=256nel tuo ~ / .vimrc aiuta a tutti? Questa è solo un'impostazione del colore ma può aiutare a eliminare alcuni problemi.

È possibile mappare nuovamente le ctrl+Arrowchiavi nel proprio ~ / .vimrc ...

Modifica: hai provato ctrl+Arrowin una sessione schermo GNU? Penso che questo sia forse il tuo problema.


appare e funziona bene in schermo con xterm-256color
outsmartin

set t_Co = 256 viene eseguito anche
outsmartin

Qualcuno ha aiutato?
Sardathrion - Ripristina Monica

Sfortunatamente no. Cosa intendi esattamente con rimappare ctrl + freccia? Li uso già rimappati per cambiare scheda in vim.
outsmartin

è mappato in questo modo: map <C-Right> gt
outsmartin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.