cygwin에서 tmux 내에서 vim을 실행할 때 어떻게 다른 커서 모양을 가질 수 있습니까?
tmux가 없으면이 라인은 내가 원하는 것을 달성하기에 충분합니다.
let &t_SI = "\e[5 q"
let &t_EI = "\e[2 q"
그러나 어떻게 든 내 TMUX가 그것을 깨뜨립니다-커서는 내가 어떤 vim 모드에 관계없이 블록 모양을 갖습니다.
내 사양 :
- 윈도우 7 x64
- 싸이 윈 x86
- TMUX 1.9a
- Vim 7.4.726 (+ cursorshape로 컴파일)
- 터미널 에뮬레이터 : mintty 1.1.3
- Cygwin 터미널 또는 Cmder에 사용 (커서 모양은 TMUX없이 만 작동)
echo $TERM
저를 준다screen-256color
내가 가지고 있기 때문에, TMUX과 외부에서 (export TERM=screen-256color
내.bashrc
.tmux.conf
포함한다 :
set -g default-terminal "screen-256color"
setw -g xterm-keys on
내가 성공하지 않고 이미 시도한 것 :
export TERM=xterm
export TERM=vt100
- “막대를 마우스 오른쪽 버튼으로 클릭> 옵션> 모양> 커서”
답변
문제는 tmux가 커서 변경 이스케이프 코드를 터미널 에뮬레이터로 보내지 않는다는 것입니다. 원하는 이스케이프 코드를 특수한 순서로 랩핑하여 tmux에 외부 터미널로 전달하도록 지시합니다.
이스케이프 시퀀스를 래핑해야하는 시퀀스는 \<Esc>Ptmux;\<Esc> ... \<Esc>\\
( Source )입니다. 은 ...
당신의 이스케이프 시퀀스입니다.
따라서 다음과 같이하십시오 .vimrc
.
if exists('$TMUX')
let &t_SI = "\<Esc>Ptmux;\<Esc>\e[5 q\<Esc>\\"
let &t_EI = "\<Esc>Ptmux;\<Esc>\e[2 q\<Esc>\\"
else
let &t_SI = "\e[5 q"
let &t_EI = "\e[2 q"
endif
터미널 에뮬레이터 또는 cygwin을 사용하지 않으므로이 코드를 테스트 할 수 없습니다. 그러나이 방법은 나를 위해 일했습니다 (단지 터미널에 맞는 다른 이스케이프 코드를 감쌌습니다).
답변
$TERM
환경 변수 의 올바른 값 은 매우 중요합니다. 와 (과) 다른지 확인하십시오 screen-256color
. xterm-256color
예를 들어 설정하십시오 .