125 votes

Quelle est la séquence préfixe/escape la moins conflictuelle pour screen ou tmux ?

L'écran va avec Ctrl + A . tmux d'autre part - comme développé dans screen - utilise Ctrl + B . Ces deux touches sont toutefois également utilisées dans les éditeurs, les shells, etc. Ainsi, choisir l'une ou l'autre dégrade l'expérience utilisateur et la fonctionnalité de ces outils lorsqu'ils sont utilisés dans tmux ou screen.

Quel est le préfixe qui entre le moins en conflit avec les raccourcis clavier d'autres programmes et shells ?

13voto

vaske Points 2468

J'utilise un système complexe pour l'écran. Mon échappatoire par défaut est réglé sur \140\140 qui est un backtick. Le site Ctrl-A complique à la fois Emacs et l'édition en ligne de commande pour moi dans Zsh, et je n'aime pas Ctrl-O (2 opérations manuelles pour la plupart des actions à l'écran).

Je lie à nouveau 's' à l'écran 1 de sorte que les nouvelles sessions sont créées de gauche à droite sur le clavier en commençant par 1. Cela me permet de réserver l'écran 0 pour ce que je considère comme des fenêtres persistantes ou de référence. C'est un geste très rapide d'une seule main pour (backtick)1, (backtick)2, (backtick)3 pour passer d'une fenêtre à l'autre.

Le problème de l'utilisation du backtick dans un environnement Unix est la tentative de couper-coller du code Shell/Perl Shell. Pour cette raison, je lie la clé F11 / F12 pour basculer entre mon caractère d'échappement.

bindkey -d -k F1        escape ^O^O # bound to F11
bindkey -d -k F2        escape \140\140 # bound to F12

Cela va permuter l'échappement vers Ctrl-O pour quand je fais des opérations de copier-coller. J'ai trouvé qu'une double coche est simple et constitue un bon compromis pour la plupart des opérations à l'écran.

Je reviens sur cette réponse avec une solution plus récente qui permet de changer de mode en appuyant sur la touche F12 et en utilisant une légende pour indiquer le mode.

## command characters
escape \140\140                # default is `

## sets caption and escape toggle
bindkey -d -k F2 process a     # bound to F12

## initial caption
caption always '%{= kW}%?%F%{+b KW}%:%{= kK}%? %= %?%F%{-b .c}>>>%{-}%? | %-w%{mW}%n* %t%? @%u%?%{-}%+w '

## registers to toggle bindkeys
register a "\140:eval 'bindkey -d -k F2 process b' 'process c' 'escape \\017\\017'^M"
register b "\017:eval 'bindkey -d -k F2 process a' 'process d' 'escape \\140\\140'^M"

## registers to change captions
register c "\140:caption string '%{= kW}%?%F%{+b mW}%:%{= kK}%? %= %?%F%{.c}ALT%{-}%? | %-w%{KW}%n* %t%? @%u%?%{-}%+w '^M"
register d "\017:caption string '%{= kW}%?%F%{+b KW}%:%{= kK}%? %= %?%F%{.c}>>>%{-}%? | %-w%{mW}%n* %t%? @%u%?%{-}%+w '^M"

9voto

terrace Points 295

J'aime réserver ^Space pour des opérations très spéciales/communes parce que je trouve que c'est le préfixe le plus facile à taper, mais pour l'instant j'essaie de le mapper en tant que prefix sur tmux .

Il laisse vos doigts libres de passer instantanément à la commande que vous voulez taper. Essayez-le.

7voto

Trevor Powell Points 515

Une suggestion tardive : ctrl-s . ctrl-s présente un certain nombre d'avantages :

  1. Sur la ligne de départ.
  2. Toujours proche de ctrl-a (en fait, pour la plupart des dactylographes, il utilisera les deux mêmes doigts qu'ils ont utilisés pour ctrl-a ), donc la mémoire musculaire passe de ctrl-a a ctrl-s est trivial - pour moi, c'est devenu une seconde nature en une heure environ après l'avoir essayé pour la première fois.
  3. Libère ctrl-a pour les opérations de type emacs "retour au début de la ligne" ou vim "incrémenter le nombre". Ou encore, pour lancer l'écran dans un panneau tmux sans avoir à se soucier de l'échappement des caractères de préfixe pour contrôler l'instance d'écran intégrée. (Je fais souvent cela en utilisant un tmux local avec des volets contenant des sessions ssh vers des serveurs distants, dans lesquels je lance screen).
  4. Ne remplace pas et n'ajoute pas d'exigences en matière d'échappement à d'autres fonctionnalités courantes du terminal. rien que la grande majorité des gens utilisent aujourd'hui est sur ctrl-s !

Bien sûr, la raison pour laquelle il n'y a rien sur ctrl-s est que dans le terminal, il est traditionnellement utilisé pour le contrôle de flux, remontant aux jours avant les outils de pagination comme more y less étaient courants. Je suis sûr qu'un programme de terminal GUI quelque part a toujours cette fonctionnalité de contrôle de flux activée par défaut, mais je n'en ai pas rencontré ; les programmes de terminal GUI que j'ai essayés semblent tous l'ignorer complètement par défaut, ce qui rend cette combinaison de touches pratique disponible pour des utilisations plus productives.

Donc, si vous n'utilisez pas réellement screen/tmux à l'intérieur (par exemple) d'un terminal Linux brut, mais plutôt à partir d'un terminal basé sur une interface graphique, alors je recommande de donner ctrl-s Essayez-le ; il m'a permis de me déplacer plus facilement dans tmux et screen.

6voto

Une clé sans conflit peut être C-z car il est généralement utilisé pour envoyer le programme en arrière-plan pour continuer une autre chose sur le Shell qui l'a lancé. Je ne le fais pas quand j'ai tmux.

4voto

jmhmccr Points 1306

J'ai entendu parler de l'utilisation de ` (backtick) et il suffit ensuite de le taper deux fois pour obtenir un backtick réel. Cela pourrait être mieux pour les utilisateurs de vi qui sont habitués à cette action (à moins que vous ne fassiez le truc du verrouillage des majuscules).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X