回答:
cat
内部tmux
で実行し、問題のキーを押して、生成されたエスケープコードを見つけます。私にとって、これは与えます^[[D
と^[[C
。次に、これらのエスケープコードを直接マッピングします。
nnoremap ^[[D gT
nnoremap ^[[C gt
ここで、^[
はエスケープ文字で、<CTRL-v><ESC>
vimを押して挿入できます。
最適な機能を実現するには、いくつかのレベルの構成を正しくセットアップする必要があります。
xterm-256color
。TERM環境変数によって識別terminfoデータベースエントリが指示TMUXを({ユーザ定義機能修飾矢印キーの配列を認識する方法kUP
、kDN
、kRIT
、kLFT
{}、3
... 7
})。シーケンスを生成するようにtmuxを構成します。TERMUXが識別するシーケンスを受信したときにtmuxが独自のxtermスタイルのシーケンスを生成xterm-keys
するon
ように、セッションオプションを設定します。あなたの:~/.tmux.conf
set-option -g xterm-keys on
screen
内で-based TERM を使用していることを確認してください(例:)screen-256color
。これは、内部の実行中のプログラム伝えtmuxのをどのように制御するにはtmuxは何の応答どこから期待するべきであるの端末(再)エミュレーションとtmuxのを。残念ながら、screen
ベースのterminfoデータベースエントリでは、変更された矢印キーのシーケンスが定義されていないことが多いため(つまり、持たないkUP
など)、tmux内で実行されるプログラムはそのようなシーケンスを予期しません。これらのキーを認識するプログラムを手動で構成する必要があります。ではVimに、あなたはあなたにこれを置くことができます~/.vimrc
:
if &term =~ '^screen'
" tmux will send xterm-style keys when xterm-keys 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
あなたはなしバリアントを使用することもできますx
(つまり、<Up>
代わりに<xUp>
あなたが使用していることを発見した場合、エトセトラ)x
-variantが停止作業に通常の矢印キーを引き起こします。
このようにキーを定義する利点は、各修飾子の組み合わせを個別にマップする必要がないことです(Shift、Control、Contol + Shift、Meta、Meta + Shift、Meta + Control、Meta + Control + Shift)。*
すべての関連配列を(参照処理するための特別な解釈を取得します:help xterm-modifier-keys
)。
次に、ハードコーディングされたシーケンスの代わりにキーをマップできます。
nnoremap <C-Right> gt
nnoremap <C-Left> gT
set t_Co=256
〜/ .vimrcの設定は役に立ちますか?これは単なる色の設定ですが、いくつかの問題を解決するのに役立ちます。
ctrl+Arrow
〜/ .vimrcのキーも再マッピングできます...
編集:ctrl+Arrow
GNUスクリーンセッションで試しましたか?これはおそらくあなたの問題だと思います。