GNU/Linux >> Tutoriels Linux >  >> Linux

Les touches Accueil/Fin ne fonctionnent pas dans tmux

Dans tmux 2.0, vous pouvez simplement ajouter ces 2 lignes dans votre .tmux.conf :

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

Il semble que le principal problème réside dans l'utilisation de xterm-256color pour $TERM. J'ai basculé $TERM sur screen-256color et le problème a disparu.


Si vous souhaitez conserver xterm-256color dans tmux pour une raison quelconque, utilisez la solution arch avec inputrc. Je l'ai testé dans tmux avec rxvt, ruby ​​irb, python, lua et les clés home/end sont correctes. Toutes les applications de lecture en ligne seront probablement correctes.

Depuis le wiki arch :

Tout d'abord :

ne définissez pas $TERM manuellement - laissez le terminal le faire.

De nombreuses applications en ligne de commande utilisent la bibliothèque Readline pour lire les entrées. Ainsi, la configuration correcte de Readline peut corriger Home et End dans de nombreux cas.

le fichier /etc/inputrc par défaut n'inclut pas de mappage pour les clés home/end.

Pour vérifier quelle est la séquence d'échappement émise pour ces clés :

1. Ctrl + V
2. Home
3. Spacebar
4. Ctrl + V
5. End

ceci affichera probablement :$ ^[[1~ ^[[4~ . Vous devez donc ajouter un mappage pour ces séquences à votre inputrc (/etc/inputrc pour être global, ou uniquement pour votre utilisateur ~/.inputrc) :

"\e[1~": beginning-of-line
"\e[4~": end-of-line

Ajoutez ce qui suit à votre .tmux.conf :

bind-key -n Home send Escape "OH"
bind-key -n End send Escape "OF"

Et vous avez terminé !

Explication

Après avoir essayé chacun de ceux-ci, et plusieurs autres que j'ai vus en parcourant d'autres réponses et documentations, cela a finalement fonctionné pour moi dans tous les scénarios que j'ai lancés. Je ne peux pas vous promettre la même chose, car les scénarios de chacun sont différents, mais c'est ce à quoi j'ai abouti.

Cela a été découvert après avoir introduit le même essai/erreur et la même logique à partir d'un article quelque peu pertinent qui n'est plus disponible. La clé est l'endroit où la traduction se produit ; dans mon cas, cela se produit dans mon .tmux.conf , plutôt que .bashrc ou .zshrc (principalement parce que ma maison/fin fonctionnait bien en dehors de tmux )

Débogage

Vous pouvez déboguer ce problème en utilisant cat -v .

Exécutez cat -v , puis appuyez sur Accueil et Fin clés. Quittez en utilisant Ctrl +C .

$ cat -v

Voici à quoi ressemblait ma sortie dans tmux using zsh , zsh , et bash :

tmux

➜  ~ cat -v
^[[1~^[[4~^C

zsh

➜  ~ cat -v
^[[H^[[F

bash

bash-3.2$ cat -v
^[[H^[[F

Résolution

Comparez les exemples ci-dessus à ce que nous attendons de voir, en associant tput avec cat -v :

$ tput khome | cat -v; echo
^[OH
$ tput kend | cat -v; echo
^[OF

Conclusion

Parce que ce problème existe uniquement dans tmux , et non dans les shells eux-mêmes, j'ai plutôt choisi d'effectuer les modifications de liaison dans la configuration tmux. En utilisant bind-key jumelé avec send , nous pouvons utiliser le Escape mot-clé associé à la séquence que nous voulons réaliser notre traduction. Ainsi :

bind-key -n NAME_OF_KEY send Escape SEQUENCE_GOES_HERE

Ce processus de débogage et de résolution peut être appliqué à tout autre problème de traduction clé. Mais, ne devenez pas trop fou. Certaines touches sont mappées à certaines séquences d'échappement pour une raison. Remarquez comment bash et zsh reçu le ^[[H séquence pour Accueil au lieu de ^[OH; il n'est probablement pas recommandé de remplacer cela dans notre .zshrc sauf si nous rencontrons des problèmes majeurs avec cela dans zsh .


Linux
  1. Comment faire en sorte que Vim fonctionne correctement avec Tmux ?

  2. Faire fonctionner 256 couleurs dans Tmux ?

  3. Tmux ne source pas le .tmux.conf ?

  4. Vim ne fonctionne pas dans Tmux ?

  5. Pourquoi `exit &` ne fonctionne pas ?

Les raccourcis clavier Tmux ne fonctionnent pas

regarder la sortie de ps aux | grep blah dans tmux ne fonctionnera pas?

Internet ne fonctionne pas dans Anbox sur Ubuntu 18.04

Affichage de l'écran GNU + du mastic

Le pavé tactile ne fonctionne pas sur Acer Aspire

La répétition automatique ne fonctionne pas