これはすべてOS XのiTerm2にあります。
私はかつて持っていた
export TERM='xterm-256color'
私の.bashrc
で。つまり、tmuxのVimは256色を使用していました。
そして、私が追加したら
set -g xterm-keys on
その後、修飾子を含むキーボードショートカットがVimで正常に機能しました。つまり、Vimタブを切り替えるためにマップしたshift+left/right
、移動(「バブル」)するためにマップしたctrl+up/down
、およびshift+left/right
は、ボックスからWordでジャンプしてコマンドラインモード(例::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>
これによりショートカットが機能しますが、適切な解決策とは言えません。ここで何が起こっているのか、そしてそれを修正する方法を誰かに教えてもらえますか?
tmuxがこれらのキーを端末に渡すことができるように、tmuxウィンドウオプションxterm-keys
を設定する必要があります。あなたはおそらくこれをあなたの~/.tmux.conf
に入れたいでしょう:
set-window-option -g xterm-keys on
Vimは通常、TERMがxterm
- somethingのときにこれらのキーの処理を自動的に設定しますが、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
少なくともそのようにすれば、さまざまな組み合わせをすべてマップする必要はありません。
ここで説明 、無効にする背景色の消去(BCE)t_ut
端末オプションをクリアして(実行:set t_ut=
をVimで入力してから、 Control+L 端末の表示を更新するため)Vimがtmux内で使用されているときに配色が正しく機能するように、GNU画面。
このように、適切なキー検出のためにTERM
値をxterm-256color
として保持しながら、適切なVimカラースキームレンダリングも取得できます。 :-)