TMUX의 Vim에서 Shift + 화살표 및 Ctrl + 화살표를 사용하는 방법은 무엇입니까?


44

이것은 OS X의 iTerm2에 있습니다.

예전에는

export TERM='xterm-256color'

.bashrc. 이것은 tmux의 Vim이 256 색을 사용했음을 의미합니다.

그리고 내가 추가하면

set -g xterm-keys on

그런 다음 수정자가있는 키보드 단축키가 Vim에서 제대로 작동했습니다. 즉 shift+left/right, Vim 탭을 전환하도록 ctrl+up/down매핑하고 이동 ( "버블") 라인으로 매핑 shift+left/right했으며 명령 줄 모드 (예 : :e foo bar baz.

그러나이 설정에서는 Vim 배경색이 여기에 언급 된 것처럼 텍스트 뒤에 만 표시되는 문제가있었습니다 .

그래서 나는 제거

export TERM='xterm-256color'

.bashrc에서 대신 내 안에 넣습니다 .tmux.conf.

set -g default-terminal "screen-256color"

Vim 배경색이 고정되었지만 키보드 단축키가 끊어졌습니다. 대신 커서가 움직이지 않고 텍스트가 삭제됩니다.

사용하여 ctrl+v(설명 된대로 키 조합에서 그대로 출력을 삽입 여기 ), 나는 그것을 해결할 수 있었다 :

map [1;5A <C-Up>
map [1;5B <C-Down>
map [1;2D <S-Left>
map [1;2C <S-Right>
cmap [1;2D <S-Left>
cmap [1;2C <S-Right>

바로 가기가 작동하지만 올바른 솔루션처럼 느껴지지는 않습니다. 아무도 여기서 무슨 일이 일어나고 있고 어떻게 고칠 수 있는지 말해 줄 수 있습니까?

답변:


68

tmux 가이 키를 터미널로 전달할 수 있도록 tmux 창 옵션 을 설정해야합니다 . 아마도 이것을 당신의 것으로 넣으십시오 :xterm-keys~/.tmux.conf

set-window-option -g xterm-keys on

Vim 은 일반적으로 TERM이 xterm뭔가 일 때 이러한 키 처리를 자동으로 설정 하지만 TERM이 이므로이를 건너 뜁니다 screen-256color. 다음 ~/.vimrc과 같이 이러한 키를 수동으로 구성 할 수 있습니다 .

if &term =~ '^screen'
    " tmux will send xterm-style keys when its xterm-keys option 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

적어도 그렇게하면 모든 다양한 조합을 매핑 할 필요가 없습니다.


감사합니다! 그것은 내가 가진 것보다 나아 보이고 설명에 감사합니다. : 여기에 설명 된대로 화살표 명령-T 플러그인에서 일을하지 않았다 아래로 내가 무엇을했다,하지만 당신의 라인에 의해 고정 된 것은, / 그 위로했다 superuser.com/questions/237751/... 내가 방금 추가 한 map <Esc>[B <Down>하나 답변. 플러그인 자체에 의해 잘못된 가정이있는 이유를 보입니다.
Henrik N

분명히 map <Esc>[B <Down>말하면, 다른 스레드에서 얻은 솔루션 플러스 는 이제 모든 것이 잘 작동한다는 것을 의미합니다.
Henrik N

@HenrikN 무엇을 설명해 주 map <Esc>[B <Down>시겠습니까? 내 .vimrc 파일에 추가해도 아무런 차이가 없습니다.
Francesco Boccardo

@Francesco Boccardo : 만약 당신이 나의 이전 코멘트에있는 링크를 따라 가서 거기에서 다시 링크를 따라 가면, superuser.com/a/215181 로 가면 아주 상세하게 설명하는 것처럼 보입니다 :)
Henrik N

@HenrikN 감사합니다. 따라서 아마도 OSX 관련 문제이거나 아마도 7 년 동안 해결되었을 것입니다 .command (control?) + r을 눌러도 tmux의 vim에서 화살표 키가 엉망이되지 않기 때문에 (Linux에 있습니다).
Francesco Boccardo

8

여기설명 된대로 tmux 및 GNU 화면에서 Vim을 사용할 때 색상 구성표가 올바르게 작동하도록 터미널 옵션 을 지우고 ( Bim 에서 실행 한 다음 + 를 눌러 터미널 표시를 새로 고침 ) BCE ( Background Color Erase )를 비활성화 하십시오 .t_ut:set t_ut=ControlL

이런 식으로 적절한 키 감지에 대한 TERM가치를 유지 xterm-256color하면서 적절한 Vim 색상 구성표 렌더링을 얻을 수 있습니다! :-)


1
아름다운! 훌륭한 형사 일.
Henrik N

2
이것이 내가 정확히 변경 한 것입니다 : github.com/henrik/dotfiles/commit/… 색상과 수정 자 키는 tmux 외부와 내부에서 모두 잘 작동하는 것 같습니다.
Henrik N
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.