2013-03-16 5 views
8

이러한 키 매핑은 tmux에서 작동하지 않습니다. 내 .vimrc, 나는이 :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 

내가 :map를 실행하면, 내가 볼 :

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

을하지만 내가 제어와 동시에 화살표 키를 쳤을 때, 그것은 더 키 바인딩이 없었다 것처럼 동작 세트.

+2

OS 또는 터미널이 키 시퀀스를 가로 챌 가능성이 있습니다. My Vim은 현재 KiTTY/tmux 설정으로 수신하지 못하는 것 같지만 너무 많이 조사하지 않았습니다. –

+1

이 맵핑은 tmux 외부에서 작동합니까? tmux에있는'$ TERM '은 무엇입니까? – romainl

+0

예, 맵핑은 tmux 외부에서 작동합니다. tmux의'$ TERM '은'tmux'의'xterm-256color'와 같습니다. –

답변

14

빔이 의 xterm -like 단자 것을 알고 (xterm 또는 t_RV 서열 특정 응답 시작 TERM 의해 식별이 정의 된 경우) 특정 변형 키 확장 시퀀스를 지원하지만,이지지 않으며 screen TERM (tmux)을 사용해야합니다.

당신은, 그러나 이러한 시퀀스에 대해 빔을 알려 TMUX가있는 경우를 활성화하고 TERM은 (당신은 또한 같은 수있는 TMUX에서 첫 선을 활성화 (더 나은) 마우스 지원) screen로 시작 할 수 있습니다

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 

의견에서 알 수 있듯이 또한 창 xterm-keys 옵션을 사용하도록 설정해야합니다. 이 같은 모든 창문이 작업을 수행 할 수 있습니다 (귀하의 ~/.tmux.conf) :

set-option -gw xterm-keys on 

(~/.tmux.conf에 대한 변경 사항이 자동으로로드되지 않는 것을 기억 효과적이기 위해서는, 당신은 tmux에서 (이 명령을 수동으로 실행해야합니다. 셸 명령 또는 접두어 : 프롬프트에서)(tmux 셸 명령 또는 접두어 : 프롬프트에서) 구성 파일을 다시로드하거나 서버를 다시 시작한 다음 모든 세션을 종료하고 tmux을 다시 시작하십시오.).