2013-09-03 6 views
33

Ich verwende derzeit tmux mit Xterm-256color $ TERM Variable. Wenn Sie in bash unter tmux sind, werden beim Drücken von home/end Tildezeichen (~) eingefügt. Außerhalb von tmux funktionieren die Home/End-Tasten gut.Home/Ende Tasten funktionieren nicht in tmux

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

Um dies zu beheben, habe ich beschlossen, die folgende meiner Bashrc hinzuzufügen:

Mit Katze und tput ich, dass es eine Diskrepanz zwischen den erzeugten und erwarteten Sequenzen sehen konnte

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

Das Problem für Bash behoben, jedoch in anderen READLINE-Programmen, wie innerhalb einer REPL wie Ipython, fügt es immer noch eine Tilde für Heim/Ende.

Warum genau ist das überhaupt ein Problem? Warum unterscheidet sich die generierte Sequenz, wenn ich innerhalb von tmux vs. außerhalb bin? Wie kann das behoben werden, so dass es in keinem Programm ein Problem ist?

+0

das ist eine gute Frage für tmux Config, aber ich würde vorschlagen, Sie 'Strg-A/E zu gewöhnen versucht/F/B/'' alt-B/F ... '(emacs bind) um den Cursor zu bewegen – Kent

+0

BTW, wenn das hilft Ihnen? http://stackoverflow.com/questions/8604150/with-term-screen-256color-under-tmux-home-and-end-keys-dont-work-why – Kent

+0

Ich verwende derzeit Ctrl-a für das Befehlsschlüssel-Präfix in tmux (ähnlich wie Bildschirm). Ich habe diesen Beitrag schon früher angeschaut, aber das scheint nur für Vim zu gelten, und das ist für mich kein Problem in Vim. –

Antwort

26

Es scheint, das Hauptproblem besteht darin, Xterm-256color für $ TERM zu verwenden. Ich habe $ TERM auf Screen-256color umgestellt und das Problem ist weg.

+0

Mein ähnliches Problem wurde gelöst, indem die Tastenbelegung mit '.inputrc' (siehe' info readline') oder für zsh in '.zshrc' wie in' http: // zshwiki.org/home/zle/bindkeys' – here

+3

Edit 'gesetzt wurde ~/.tmux.conf' und fügen Sie eine Zeile 'set -g default-terminal'-256color" ' – Wernight

+1

Diese Antwort, funktioniert auch für das gleiche Problem mit GNU-Bildschirm. Ich habe gerade 'term" screen-256color "' zu meinem ~/.screenrc hinzugefügt. –

4

Wenn Sie aus irgendeinem Grund mit xterm-256color in tmux bleiben möchten - verwenden Sie arch solution mit inputrc. Ich testete es in tmux mit Rxvt, Ruby Irb, Python, Lua und Home/Ende-Tasten sind in Ordnung. Wahrscheinlich wird jede readline App in Ordnung sein.

+0

Ich habe TERM überschrieben, das war die Ursache all meiner Probleme, danke für den Link –

+0

Bearbeitung der ~/.inputrc Datei funktionierte für mich. – mike

17

In tmux 2.0 können Sie nur diese zwei Zeilen in Ihrer .tmux.conf hinzufügen:

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

Das funktioniert nur für readline (und Emacs) und wird an anderer Stelle unbeabsichtigte Folgen haben. –

Verwandte Themen