vimのカーソル形式は、 kdeのkonsoleのtmuxとは異なります。

vimのカーソル形式は、 kdeのkonsoleのtmuxとは異なります。

私はKDEを使用しており、Konsoleのvimディレクトリに次のコマンドがあります.vimrc

" Konsole
" solid underscore
let &t_SI = "\033]50;CursorShape=2\007"
" solid block
let &t_EI = "\033]50;CursorShape=0\007"

ただし、使用すると機能しませんtmux。なぜこれが起こるのですか?動作させるにはどうすればよいですか?

答え1

~によると私のvimの設定:

tmuxは、DCSシーケンスで囲まれた場合にのみエスケープシーケンスを端末に渡します(バラより)

if exists('$TMUX')したがって、私の設定では、vimがtmux()で実行されていることを検出すると、"\ePtmux;\e"各エスケープシーケンスをおよびで囲みます。"\e\\"

私のエスケープシーケンスはxtermによって異なりますが、Konsoleでも同様のトリックを実行する必要があるようです。

ニオブ: "\e"同じですか?"\033"

あなたの状況は次のとおりです(申し訳ありませんが、テストされていません)。

" Konsole
" solid underscore
let &t_SI = "\033]50;CursorShape=2\007"
" solid block
let &t_EI = "\033]50;CursorShape=0\007"

if exists('$TMUX')
  let &t_SI = "\ePtmux;\e" . &t_SI . "\e\\"
  let &t_EI = "\ePtmux;\e" . &t_EI . "\e\\"
endif

関連情報