vim + tmux에서 커서 모양


14

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
  • "막대를 마우스 오른쪽 버튼으로 클릭> 옵션> 모양> 커서"

"+ cursorshape"기능으로 컴파일 된 Vim?
Alex Kroll 1

터미널 설정을 확인하십시오. 그리고이 질문은 비슷한 superuser.com/questions/634326/…
Alex Kroll

어떤 터미널 에뮬레이터를 사용하고 있습니까? 당신은 같은 것을 시도 let &t_SI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=1;BlinkingCursorEnabled=1\x7\<Esc>\\"하고를 let &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=0;BlinkingCursorEnabled=0\x7\<Esc>\\"?
jjaderberg

@jjaderberg iTerm의 탈출 순서? 몇 가지주의 사항 만 사용하여 ITerm에서 작동 : 하여 ITerm 문서 > iTerm2 여러 표준이 아닌 이스케이프 코드를 지원합니다. tmux 또는 화면에서 제대로 작동하지 않을 수 있으며 다른 터미널 에뮬레이터에 알 수없는 영향을 줄 수 있습니다. 조심해서 진행해라.
Alex Kroll

1
내 소프트를 한 번 더 확인했으며 모든 버전이 귀하와 동일하지만 민트 옵션의 $ TERM은 tmux xterm-256color안에 있습니다 screen-256color. tmux의 버전은 1.9입니다 (그리고 1.9a입니다). tmux 내에서 vim을 시작했습니다 vim -u NULL(-u NULL은 구성이 없음을 의미합니다). 커서 모양은 모든 모드에서 블록이지만 예상대로 블록 (일반 모드)에서 (삽입 모드)로 스위치를 지정 t_SI하고 t_EI모양을 지정할 때 I. 색상과 플러그인없이 빈 .vimrc를 사용하여 vim을 시작할 수 있습니까?
Alex Kroll

답변:


11

문제는 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을 사용하지 않으므로이 코드를 테스트 할 수 없습니다. 그러나이 방법은 나를 위해 일했습니다 (단지 터미널에 맞는 다른 이스케이프 코드를 감쌌습니다).


이것은 더 나을-내 변경없이 작동합니다 .bashrc. 감사합니다.
코스 삭

3

$TERM환경 변수 의 올바른 값 은 매우 중요합니다. 와 (과) 다른지 확인하십시오 screen-256color. xterm-256color예를 들어 설정하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.