54

ctrl+tabおよびctrl+ shift+tabバインディングを tmux セッション内で動作させようとしています(PuTTY も使用しています)。

PuTTY が正しく送信されるように、PuTTY を再コンパイルする必要がctrlありました。+shift を使用した後、それを見ることができ、それぞれ+と+ +に送信されています。これらを tmux 内の次のウィンドウと前のウィンドウにバインドする方法はありますか?ctrlv^[[27;5;9~^[[27;6;9~ctrltabctrlshifttab

編集: いくつかの調査の後、これらのキーコードを含めるように xterm を構成する必要があるかもしれないと考えています。どうすればそれを行うことができるでしょうか?

Edit2: infocmp を取得して再コンパイルできることがわかりました。追加した

kctab=\E[27;5;9~, kcstab=\E[27;6;9~,

エラーが発生することを除いて、最後まで。"エントリは 1 列目に端子名で始まっていません"

4

1 に答える 1

50

最近の「リリースされていない」バージョンのtmuxは、端末から xterm スタイルのキー シーケンスを送信すると、これらのキー シーケンスを自動的に認識します (terminfo エントリを変更する必要はありません)。次のリリース バージョン (1.8?) でもこのサポートが必要です。tmux 1の適切なビルドでは、 tmux構成でキーをバインドするだけです。

bind-key C-Tab next-window
bind-key C-S-Tab previous-window

これらのキーの前にプレフィックス キーを入力する必要があります。

(注:~/.tmux.confはサーバーの起動時にのみ処理されます。変更を加えた場合は、すべてのセッションを終了してサーバーを再起動するか、(eg)tmux source ~/.tmux.confを使用して既存のサーバーにファイルを再処理させる必要があります。)

また、tmuxでこれらの (およびその他の) xterm スタイルのキー シーケンスをtmuxxterm-keys内で実行されているプログラムに渡す場合は、 window オプションを有効にする必要があります。

set-option -gw xterm-keys on

-w(必要に応じて、代わりに を使用して、ウィンドウごとにこれを行うことができます-gw。)


プレフィックスを入力せずにこれらのキーを使用できるようにしたい場合は、代わりに「プレフィックスなし」バインディングを使用できます。

bind-key -n C-Tab next-window
bind-key -n C-S-Tab previous-window

ただし、これにより、多かれ少なかれキーがtmuxに「専用」になります。tmux内で実行されているプログラムにこれらのキーを入力するのは困難です (たとえば、tmuxコマンドを使用する必要があります。send-keys C-Tab通常、xterm-keysこれらの xterm スタイルのキー シーケンスを送信できるようにする必要があります)。


terminfo エントリの編集に関する問題は、おそらく、端末タイプを指定する行の後の各行がタブで始まる必要があるためです。タブで始まらない行は、新しい端末エントリの始まりです。技術的には、NL TAB シーケンスは基本的にこのファイル形式の行の継続です。各エントリは単一の論理行です。

また、terminfo エントリを再定義する場合は、必ずinfocmpおよびtic-xと共に使用して、ユーザー定義の機能 (一部はかなり標準的なもの) を保持してください。


1つまり、sf.netのtmux Git リポジトリ(クローン可能な URL )の最近のコードから構築されましたgit://git.code.sf.net/p/tmux/tmux-code

于 2013-03-18T06:59:16.790 に答える