2010-04-21 5 views
22

Ctrl-Tab을 Tabn에, Ctrl-Shift-Tab을 Tabp에 매핑하고 싶습니다.내 vimrc에서 매핑 <C-Tab>이 Ubuntu에서 실패합니다.

Windows XP에서 gVim으로 작업했지만 우분투 9.10에서 .vimrc로 옮겼습니다. (vim 7.2) 작동하지 않습니다.

nmap <C-Tab> :tabn<CR> 
nmap <C-S-Tab> :tabp<CR> 
nmap <C-t> :tabnew<CR> 

<C-t> 잘 작동, 그래서 Ctrl 키를 매핑하는 것은 문제가 될 것 같지 않습니다

여기에 관련 제의 .vimrc의 섹션입니다. 나는 정말로 어디에서 시작해야하는지 모른다! Windows에서 문제가 없다고 생각하면 여기에 무슨 문제가있을 수 있습니까?

자세한 정보 : 저는 xorgfluxbox이 설치된 우분투 9.10 서버를 사용하고 있습니다. 내 터미널로 xterm을 사용하고 있습니다.

Ctrl 키 탭 매핑 플럭스 박스에서 작동 : I 지도 Ctrl 키 탭 내 창 관리자에 성공적으로 Ctrl 키를 교대 - 탭; 내 xterms 탭을 시작할 경우 예상대로 해당 탭을 순환 할 수 있습니다. 이게 무슨 뜻인지 모르겠지만 문제는 이 아니라 창 관리자/xorg 문제입니다.

키가 다른 것으로 매핑되지 않은 것 같아서 함께 인식 할 수 있습니다.

답변 :xterm 문제입니다. ctrl-tab에 대한 고유 한 키 코드를 가로 채고 전송하지 않습니다. 자세한 내용은 아래의 전체 답변을 참조하십시오.

+1

C-Tab은 터미널에 특별한 의미가 있습니까? – Cascabel

+0

아마도 ... 나는 그것을 조사 할 것이다. xterm을 실행 중입니다. – nfm

답변

30

확실히 중요한 문제입니다.

분명히 xterm과 많은 다른 터미널 에뮬레이터는 기본적으로 ctrl-tab을 가로 채지 않고 탭 신호 만 보냅니다. 이 Vim wiki page는 ctrl-tab이 xterm, Eterm 및 aterm에 대해 작동하지 않는다고 말합니다. 또한 Arch linux form post이 단말 문제라고 주장합니다.

해결책this blog post의 정보와이 vim wiki for mapping keycodes의 정보를 결합하여 찾을 수 있습니다. 이 요점은 xterm이 .Xresources 파일의 ctrl-tab 및 ctrl-shift-tab에 대한 고유 코드를 가로 채서 보내도록 구성한 다음 펑키 한 매핑을 사용하여 .vimrc에 해킹하는 것입니다.

짧게 말하면 xterm과 vim을 모두 속이기 때문에 속임수를 사용하는 것이 어렵다는 것입니다. 저는 개인적으로 계속해서 다른 매핑을 사용할 것입니다 ...이 문제는 심각한 시간에 빠지기 때문에 효과를 발휘할 가치가 있다고 생각하지 않습니다!

도움 주셔서 감사합니다.

+0

임시로 원하는 경우 http://superuser.com/questions/410982/in-vim-how-can- 탭 사이를 빠르게 전환 할 수 있습니다. 이것은 gt 또는 gT의 키 조합을 사용하여 터미널 –

+1

을 통해 작동하는 것으로 보이는 대체 터미널이이 문제를 해결할 수 있습니까? – wukong

+0

@wukong 그게 내가 생각하고있는 것인데, 나는 tmux가'screen-256color'로 설정되어야 함을 알 수있다. 그래서 다른 터미널에서이 작업을 할 수 있을까? – statquant

0

우분투를 사용하는 경우 아마도 Compiz를 사용하도록 설정했을 것입니다.

확실히 알 수는 없지만 Compiz 확장 프로그램과 그 바로 가기가 정의되어 있는지 여부를 확인해야합니다. 나는 한 번 비슷한 문제가 있었지만 정력과는 문제가 없었다.

일부 키 입력을 가로채는 X 서버 일 수도 있습니다 (예 : xbindkeys).

+0

추가 정보 : xorg가 설치되어 있고 윈도우 창 관리자로 플럭스 박스가 설치된 우분투 서버를 실행 중입니다. – nfm

2

나는 NFM의 대답 @에서 블로그와 위키 게시물을 사용하고 그것을 해결 :

가 (복사 - 붙여 넣기를 할 수 있습니다이 경우) 당신 .Xresources 파일이 넣어 :

xterm*VT100.Translations: #override \ 
      Ctrl ~Shift <Key>Tab: string(0x1b) string("[27;5;9~") \n\ 
      Ctrl Shift <Key>Tab: string(0x1b) string("[27;6;9~") 

그런 다음 cd ; xrdb .Xresources을 xterm을 다시 시작하십시오.


.vimrc이 넣어 :

을! 중요 - 대신 XXXX의 당신은 CTRL-V를 입력해야하고 Esc를또는 전체 텍스트를 복사 - 붙여 넣기 및 복사하여 붙여 넣을 수 (<CTRL-R> +로 삽입)입니다 %s/\(set <F1[34]>=\)XXXX/\=submatch(1) . "\33"/g를 실행합니다.

set timeout timeoutlen=1000 ttimeoutlen=100 
set <F13>=XXXX[27;5;9~ 
nnoremap <F13> gt 
set <F14>=XXXX[27;6;9~ 
nnoremap <F14> gT 

그리고 vim을 다시 시작하십시오.

완료.

+0

이것은 작동하지 않습니다 – statquant

+0

@statquant 그것은 완벽하게 작동합니다. 정확히 어떤 부분이 당신에게 효과가 없다고 쓸 수 있습니까? – MichalH

+0

나는 이것으로 탭을 바꿀 수 없다. 나는 그 테이블을 가지고'.Xresources' 파일을 복사했고,'cd; xrdb .Xresources'는'XXXX'에서'^ [''로 변경하여'.vimrc'을 업데이트했습니다. 모든 터미널과 vim을 다시 시작한 줄은 ... 작동하지 않습니다. – statquant