tmux 2.0 では、これらの 2 行を .tmux.conf
に追加するだけです。 :
bind -n End send-key C-e
bind -n Home send-key C-a
主な問題は、$TERM に xterm-256color を使用することにあるようです。 $TERM を screen-256color に切り替えたところ、問題は解決しました。
何らかの理由で tmux で xterm-256color を使用したい場合は、inputrc で arch ソリューションを使用してください。 rxvt、ruby irb、python、lua、およびホーム/エンド キーを使用して tmux でテストしました。おそらくすべての readline アプリで問題ありません。
Arch Wiki より:
まず最初に:
<ブロック引用>$TERM を手動で設定しないでください。端末に任せてください。
<ブロック引用>多くのコマンド ライン アプリケーションは、Readline ライブラリを使用して入力を読み取ります。そのため、Readline を適切に構成することで、多くの場合、Home と End を修正できます。
デフォルトの /etc/inputrc ファイルには、ホーム/エンド キーのマッピングが含まれていません。
これらのキーに対して発行されたエスケープ シーケンスを確認するには:
1. Ctrl + V
2. Home
3. Spacebar
4. Ctrl + V
5. End
これはおそらく次のように出力されます:$ ^[[1~ ^[[4~
.したがって、これらのシーケンスのマッピングを inputrc に追加する必要があります (/etc/inputrc をグローバルに、またはユーザー ~/.inputrc のみに):
"\e[1~": beginning-of-line
"\e[4~": end-of-line
以下を .tmux.conf
に追加します :
bind-key -n Home send Escape "OH"
bind-key -n End send Escape "OF"
これで完了です!
説明
これらのそれぞれと、他の回答やドキュメントを熟読しているときに見た他のいくつかを試した後、これは、私が投げたすべてのシナリオで最終的に機能しました。シナリオは人それぞれ異なるため、同じことを約束することはできませんが、最終的にはこのような結果になりました。
これは、利用できなくなったやや関連性のある記事から同じ試行錯誤とロジックを導入した後に発見されました。重要なのは、翻訳が行われる場所です。私の場合、これは .tmux.conf
内で発生します 、.bashrc
ではなく または .zshrc
(主に、私のホーム/エンドが tmux
の外で正常に機能したためです )
デバッグ
cat -v
を使用して、この問題をデバッグできます。 .
cat -v
を実行 、次にホームを押します そして終了 キー。 Ctrl を使用して終了します +C .
$ cat -v
tmux using zsh
内の出力は次のようになります。 、 zsh
、および bash
:
tmux
➜ ~ cat -v
^[[1~^[[4~^C
zsh
➜ ~ cat -v
^[[H^[[F
バッシュ
bash-3.2$ cat -v
^[[H^[[F
解決策
tput
をペアにして、上記の例と予想されるものを比較してください cat -v
で :
$ tput khome | cat -v; echo
^[OH
$ tput kend | cat -v; echo
^[OF
結論
この問題は tmux
内にのみ存在するため 、シェル自体内ではなく、代わりに tmux 構成内でバインドの変更を行うことにしました。 bind-key
を使用して send
とペア 、 Escape
を使用できます 翻訳を達成したいシーケンスとペアになったキーワード。したがって:
bind-key -n NAME_OF_KEY send Escape SEQUENCE_GOES_HERE
このデバッグおよび解決プロセスは、他の重要な翻訳の問題にも適用できます。しかし、あまり夢中にならないでください。一部のキーは、何らかの理由で特定のエスケープ シーケンスにマップされます。 bash
に注意してください と zsh
^[[H
を受け取りました ホームのシーケンス ^[OH
の代わりに; .zshrc
でこれをオーバーライドすることはおそらくお勧めしません zsh
でこれに重大な問題が発生していない限り .