vim + tmuxでのカーソル形状


14

cygwinの下でtmux内でvimを実行するとき、どのように異なるカーソル形状を使用できますか?

tmuxがなければ、これらの行は私が望むものを達成するのに十分でしょう:

let &t_SI = "\e[5 q"
let &t_EI = "\e[2 q"

しかし、どういうわけか私のtmuxはそれを壊します-カーソルは私がどんなvimモードであってもブロックの形をしています。

私の仕様:

  • Windows 7 x64
  • Cygwin x86
  • TMUX 1.9a
  • Vim 7.4.726(+ cursorshapeでコンパイル)
  • 端末エミュレーター:mintty 1.1.3
  • Cygwin Terminalまたは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
  • 「バーを右クリック>オプション>ルックス>カーソル」(カーソルは永続的に変更されますが、vimモードでは変更されません)

「+ cursorshape」機能でコンパイルされたVim
アレックスクロール

端末の設定を確認してください。そして、この質問はsuperuser.com/questions/634326/に
アレックスクロール

どの端末エミュレータを使用していますか?あなたのような何かを試してみました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でのみ機能しますが、注意が必要です 。iTermDoc > iTerm2は、いくつかの非標準のエスケープコードをサポートしています。これらはtmuxまたは画面で適切に動作せず、他のターミナルエミュレータに未知の影響を与える可能性があります。注意して進めてください。
アレックスクロール

1
私はもう一度ソフトをチェックし、すべてのバージョンはあなたのものと同じですが、minttyオプションの$ TERMはxterm-256colortmux内にありますscreen-256color。tmuxのバージョンは1.9です(そして1.9aです)。tmux内でvimを起動しましたvim -u NULL(-u NULLは設定なしを意味します)。カーソルの形状はどのモードでもブロックですが、割り当てt_SIt_EI形状を変更すると、ブロック(通常モード)からI(挿入モード)に期待どおりに切り替わります。カラースキームやプラグインなしで、空の.vimrcでvimを起動できますか?
アレックスクロール

回答:


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-256colorxterm-256colorたとえば、設定します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.