^[[27;5;9~
タブを切り替えるために、vimからctrl-tab(つまり)を割り当てました。直接動作しますが、シーケンスをxterm
実行するときにのみtmux
シーケンスが動作します。tmux
シーケンスがキャプチャされ配信されないためです。
これはバグですか、それとも間違って使用していますか?私の設定:
unbind C-b
set-option -g prefix C-a
bind-key a send-prefix
bind-key C-a last-window
set -g base-index 1
set -s escape-time 0
set -g status-bg red
set -g status-right '#(date)'
setw -g window-status-current-attr underscore
setw -g mode-mouse off
setw -g mode-keys vi
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection
bind y run-shell -b "tmux save-buffer - | xclip -i -selection clipboard"
# Experimental below
set -g terminal-overrides 'xterm:colors=256'
答え1
tmuxは入力を端末の説明で定義されているキーと一致させようとするため、tmuxでは「時々」しか機能しません。
- 一連のバイトを読んで
- 「外部」端末記述のキーと一致することを確認し、
- それから店それ鍵、そして
- 後で、「内部」端末で説明されている同等のバイトシーケンスを内部で実行されているプログラムに送信します。
tmux
vim が xterm のリソースを切り替えるために制御シーケンスを送信すると、^[[27;5;9~
xterm はエスケープシーケンスを送信します。modifyOtherKeys
tmux
。ブロック:xtermに達しません(テストプログラムで確認済み)。送る制御順序)。
これが「時々」動作するのを見ると、おそらく速度が遅くなり、tmuxがエスケープシーケンスを認識しないようにするいくつかのタイミングの問題が原因です。
答え2
+と++をtmux
常に通過できないコンピュータがありますが、同じバージョンと構成の異なるコンピュータがあってもこれは発生しません。CtrlTabCtrlShiftTabtmux
まだ理由を理解していませんが、私に役立つ解決策は、これらのシーケンスをtmux
実行中の項目に明示的に渡すように設定することでした。
# Pass on Ctrl+Tab and Ctrl+Shift+Tab
bind-key -n C-Tab send-keys Escape [27\;5\;9~
bind-key -n C-S-Tab send-keys Escape [27\;6\;9~