2013-09-03 18 views
33

現在、xterm-256color $ TERM変数でtmuxを使用しています。 tmuxの下のbashの中で、home/endを押すとチルダ文字(〜)が挿入されます。 tmuxの外側では、ホーム/エンドキーがうまく動作します。猫とTPUTを使用してホーム/終了キーがtmuxで機能しない

、私が生成され、期待される配列の間の不一致があったことを見ることができる:

$ cat -v # pressing home, then end 
^[[1~^[[4~ 
$ tput khome | cat -v; echo 
^[OH 
$ tput kend | cat -v; echo 
^[OF 

これを修正するために、私は私の.bashrcに以下を追加することにしました:

if [[ -n "$TMUX" ]]; then 
    bind '"\e[1~":"\eOH"' 
    bind '"\e[4~":"\eOF"' 
fi 

これはbashの問題を修正しましたが、ipythonのようなREPLのような他のreadlineプログラムでは、home/endのチルダも挿入します。

なぜこれは最初の問題ですか?私がtmuxとその外側にあるときに生成されるシーケンスが違うのはなぜですか?これを修正してどのプログラムでも問題にならないようにするにはどうすればいいですか?

+0

を、これはtmuxは設定のために良い質問です、しかし、私はあなたがCTRL-A/E 'に慣れるしようとしていることをお勧めこれが助けになる場合、カーソルを移動するために/ F/B/'' alt-B/F ... '(emacs bind)をカーソル – Kent

+0

btwに移動しますか? http://stackoverflow.com/questions/8604150/with-term-screen-256color-under-tmux-home-and-end-keys-dont-work-why – Kent

+0

私は現在、コマンドキープレフィックスにctrl-aを使用していますtmux(画面に似ています)。以前はその投稿を見ていましたが、それはVimだけに当てはまるようですが、Vimでは私にとって問題ではありません。 –

答えて

26

主な問題は、$ TERMにxterm-256colorを使用することです。私は$ TERMをscreen-256colorに切り替えました。問題はなくなりました。

+0

私の同様の問題は 'http:// zshwiki.org/home/zle/bindkeys'のように' .inputrc'( 'info readline'を参照)または' .zshrc'のzshのキーバインドを設定することで解決しました – here

+3

Edit ' 〜/ .tmux.conf'を追加し、 'set -g default-terminal" screen-256color "' – Wernight

+1

という行を追加してください。この回答は、GNU Screenと同じ問題でも動作します。私はちょうど私の〜/ .screenrcに 'term" screen-256color "'を追加しました。 –

4

何らかの理由でxterm-256colorをtmuxに残したい場合は、arch solutionとinputrcを使用してください。私はtxuxでrxvt、ruby irb、python、lua、home/endキーでテストしました。おそらく、すべてのreadlineアプリケーションはokでしょう。

+0

私はすべての私の問題の原因だったTERMをオーバーライドしました –

+0

〜/ .inputrcファイルの編集は私のために働いていました。 – mike

17

tmuxは2.0で、あなたは自分の.tmux.confでこれらの2行を追加することができます。

bind -n End send-key C-e 
bind -n Home send-key C-a 
+0

これはreadline(とEmacs)でのみ動作し、意図しない結果が他の箇所で発生します。 –

関連する問題