2013-03-16 16 views
8

Queste associazioni di tasti smettono di funzionare in tmux. Nel mio .vimrc, ho:Mappatura dei tasti freccia durante l'esecuzione di tmux

nmap <Space> i 
map <C-Down> <C-w>j 
map <C-Up> <C-w>k 
map <C-Left> <C-w>h 
map <C-Right> <C-w>l 

Quando eseguo :map, vedo:

<C-Right>  <C-W>l 
    <C-Left>  <C-W>h 
    <C-Up>  <C-W>k 
    <C-Down>  <C-W>j 

Eppure, quando ho colpito il controllo e un tasto freccia, allo stesso tempo, si comporta come se non scorciatoia era impostato.

+2

È possibile che il sistema operativo o il terminale stiano intercettando quelle sequenze di tasti. Il mio Vim non sembra riceverli con il mio attuale setup KiTTY/tmux, ma non l'ho esaminato troppo. –

+1

Queste mappature funzionano al di fuori di tmux? Qual è il tuo '$ TERM' in tmux? – romainl

+0

Sì, i mapping funzionano fuori da tmux. '$ TERM' in tmux è lo stesso di' tmux', che è 'xterm-256color'. –

risposta

14

Vim sa che xterm like terminali (identificati mediante TERM iniziano xterm, o una particolare risposta alla sequenza t_RV, se definito) supportare le sequenze estesi per alcuni tasti modificati, ma non assume questo per screen TERMINI (che dovresti usare sotto tmux).

È possibile, tuttavia dire a Vim di queste sequenze e consentire loro se TMux è presente, e TERM inizia con screen (le prime linee consentono (migliore supporto del mouse) sotto tmux, che potrebbero piacerti anche):

if &term =~ '^screen' && exists('$TMUX') 
    set mouse+=a 
    " tmux knows the extended mouse mode 
    set ttymouse=xterm2 
    " 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" 
    execute "set <xHome>=\e[1;*H" 
    execute "set <xEnd>=\e[1;*F" 
    execute "set <Insert>=\e[2;*~" 
    execute "set <Delete>=\e[3;*~" 
    execute "set <PageUp>=\e[5;*~" 
    execute "set <PageDown>=\e[6;*~" 
    execute "set <xF1>=\e[1;*P" 
    execute "set <xF2>=\e[1;*Q" 
    execute "set <xF3>=\e[1;*R" 
    execute "set <xF4>=\e[1;*S" 
    execute "set <F5>=\e[15;*~" 
    execute "set <F6>=\e[17;*~" 
    execute "set <F7>=\e[18;*~" 
    execute "set <F8>=\e[19;*~" 
    execute "set <F9>=\e[20;*~" 
    execute "set <F10>=\e[21;*~" 
    execute "set <F11>=\e[23;*~" 
    execute "set <F12>=\e[24;*~" 
endif 

Come indica il commento, è inoltre necessario che l'opzione xterm-keys della finestra sia abilitata. Si può fare questo per tutte le finestre di questo tipo (in ~/.tmux.conf):

set-option -gw xterm-keys on 

(Ricordate che le modifiche ai ~/.tmux.conf non vengono caricati automaticamente Per essere efficace, è necessario eseguire il comando manuale (in un tmux. comando shell, o al prompt Prefisso :) o caricare nuovamente il file di configurazione con (in un comando di shell o un prefisso :) o riavviare il server (uscire da tutte le sessioni e riavviare tmux)).

Problemi correlati