web-dev-qa-db-fra.com

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

Écran va avec Ctrl+A. tmux d’autre part - tel que développé dans screen - utilise Ctrl+B. Cependant, les deux frappes sont également utilisées dans les éditeurs, les shells, etc. Ainsi, le choix de 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 préfixe entre le moins en conflit avec les raccourcis clavier d'autres programmes et de shells?

91
Flow

Je pense que ^\ (a.k.a. ^|) est la meilleure solution si elle occupe une position commode sur votre clavier. Ses utilisations dans d'autres programmes sont assez rares:

  • envoyer SIGQUIT à un processus
  • abandon des boucles pendant ou dans un shell lorsque ^C est intercepté
  • toggle-input-method dans emacs

Je ne connais aucune autre utilisation. Veillez à ne pas tuer accidentellement un processus en dehors de tmux ou screen après vous y être habitué. Cela ne m'est arrivé qu'une fois dans quelques années.

~/.tmux.conf

unbind-key C-b
set -g prefix 'C-\'
bind-key 'C-\' send-prefix

~/.screenrc

escape ^|^|
46
cjay

Pour les personnes qui veulent utiliser backtick comme évasion dans tmux, vous aurez envie d'ajouter:

unbind C-b
set -g prefix `
bind-key ` send-prefix

Ce dernier point est important, sinon vous ne pouvez pas taper de backtick à d’autres fins :-)

47
Ned Ruggeri

Ctrl + A est également connu pour causer des problèmes avec Emacs, y compris Bash en mode Emacs. Il semble que ce ne soit pas un problème pour vous.

Ctrl + O est l'autre option que j'ai vue. Apparemment, il s’agit de la valeur par défaut dans RatPoison (il s’agit d’un gestionnaire de fenêtres X ne nécessitant pas de souris). J'ai utilisé Ctrl + O lorsque j'utilisais des écrans imbriqués: Ctrl + O pour les écrans extérieurs et Ctrl + A pour les écrans intérieurs. A bien fonctionné, mais un peu effrayé mes collègues. :-)

Je pensais juste et si vous utilisez vi plutôt que Emacs, il y a quelques alternatives. Ctrl + G n'est pas utilisé beaucoup, par exemple.

20
staticsan

J'ai CAPS-LOCK globalement mappé à ESC. Ensuite, j'utilise M-Space (c'est-à-dire CAPS-LOCK + Space) pour mon préfixe.

13
Nathan Speed

J'utilise un système complexe pour l'écran. Mon échappement par défaut est défini sur\140\140, ce qui est un backtick. La combinaison de touches Ctrl-A me complique à la fois pour éditer Emacs et la ligne de commande au sein de Zsh, et je n'aime pas Ctrl-O (opérations à 2 mains pour la plupart des actions à l'écran).

Je relie l'écran à l'écran 1 pour que les nouvelles sessions soient créées de gauche à droite sur le clavier à partir de 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 très rapide, un geste d'une main à (mal de dos) 1, (mal de dos) 2, (mal de dos) 3 de permuter entre les fenêtres.

Le problème de l'utilisation de backtick dans un environnement unix est lié à la tentative de couper-coller du code de script Shell/Perl. Pour cette raison, je lie les touches F11/F12 pour basculer entre mes caractères d'échappement.

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

Cela échangera l'échappement vers Ctrl-O lorsque je ferai des opérations de copier/coller. J’ai trouvé qu’un double tick était simple et représentait un bon compromis pour la plupart des opérations d’écran.

Revisiter cette réponse avec une solution plus récente qui permet de basculer le mode en appuyant sur 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"
12
Darren Hall

J'utilise Ctrl-Q dans tmux et cela a bien fonctionné jusqu'à présent. Je dois toutefois mentionner que cela entre en conflit avec le contrôle de flux de Shell. Par défaut, Ctrl-Q permet de réactiver la sortie après l'avoir arrêtée avec Ctrl-S. Ayant été surpris par un Shell coincé à plusieurs reprises après avoir heurté Ctrl-S par mégarde, j'ai appris à ne pas appuyer sur Ctrl-S.

(On pourrait également désactiver complètement le contrôle de flux avec stty -ixon ou associer différentes clés à stty start et stty stop.)

# tmux.conf
unbind C-b
set -g prefix C-q
11
simonair

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 le moment, j'essaye de le mapper comme prefix dans tmux .

Vos doigts sont libres pour passer instantanément à la commande à saisir. Faites un essai.

6
terrace

Une suggestion tardive: ctrl-s. ctrl-s présente de nombreux avantages:

  1. Au premier rang.
  2. Toujours proche de ctrl-a (en fait, pour la plupart des dactylographes, il utilisera les mêmes doigts que pour ctrl-a), de sorte que le passage de la mémoire musculaire de ctrl-a à ctrl-s est trivial. l'essayer.
  3. Libère ctrl-a pour les opérations "retour au début de la ligne" ou "incrément numéro" de style vac. Ou hé, pour exécuter screen dans un volet tmux sans avoir à vous soucier d'échapper aux caractères de préfixe pour contrôler l'instance d'écran incorporé. (Je le fais souvent en utilisant un tmux local avec des panneaux contenant des sessions ssh sur des serveurs distants, dans lesquels je lance screen)
  4. Ne remplace pas et n'ajoute pas de conditions d'échappement à toute autre fonctionnalité de terminal couramment utilisée. rien la grande majorité des gens utilisent aujourd'hui est sur ctrl-s!

Bien sûr, la raison pour laquelle rien n’est sur ctrl-s, c’est que, dans le terminal, il est traditionnellement utilisé pour le contrôle de flux, qui remonte à l’époque antérieure aux outils de pagination tels que more et less. Je suis sûr qu'un logiciel de terminal graphique quelque part a toujours cette fonctionnalité de contrôle de flux activée par défaut, mais je ne me suis pas encore heurté à une seule; Les programmes terminaux 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 screen/tmux depuis (par exemple) un terminal Linux brut, mais plutôt depuis un terminal basé sur une interface graphique, je vous recommande d'essayer ctrl-s; Cela m'a permis de faire plus facilement des compressions dans tmux et écran.

6
Trevor Powell

J'ai entendu parler de `(backtick) utilisé et ensuite il vous suffit de le taper deux fois pour un backtick réel. Cela pourrait être mieux pour les utilisateurs de vi qui sont habitués à l'action (sauf si vous faites le verrouillage majuscule).

4
bluehavana

Je recommande C-j, qui n'interfère pas beaucoup avec vi ou emacs. Pour l’essentiel, je souscris à un commentaire de Susam Pal, qui semble digne d’être présenté comme une réponse, car les autres semblent tous avoir des conflits importants de mon point de vue.

J'utilise C-j comme clé de préfixe, car C-j est synonyme de j ou de Vim et personne n'utilise C-j pour déplacer une ligne vers le bas dans Vim. J'ai ceci dans mon ~/.tmux.conf:

set -g prefix2 C-j; bind-key C-j send-prefix -2

4
nealmcb

Une clé sans conflit peut être C-z, comme il est généralement utilisé pour envoyer le programme en arrière-plan, afin de continuer une autre opération sur le shell qui l’a lancé Je ne fais pas ça quand j'ai tmux.

4
Josuah Demangeon

Pour la disposition du clavier du programmeur Dvorak, il est très pratique d’utiliser une touche moins (tiret) comme préfixe, c’est-à-dire ctrl + -.
La touche moins est sur la position de la guillemet simple dans la mise en page qwerty. De plus, j'ai la touche majuscule qui fonctionne comme une touche ctrl. Voici une conf de tmux, pour la définir comme préfixe:

unbind C-b
set -g prefix C-_
bind C-_ send-prefix
bind - last-window

Vous vous demandez peut-être pourquoi le trait de soulignement est utilisé à la place de moins? Reportez-vous à Tmux: comment puis-je me lier à C— (control-moins)?
Pour qwerty, vous pouvez appliquer Comment lier le préfixe tmux à la solution C - '? , afin de conserver le même raccourci .

Je dirais que c'est un préfixe parfait si vous utilisez Vim/Neovim. Comme les préfixes, tels que ctrl + a ou ctrl + b, masquent (superposent) les fonctionnalités de Vim, dans les deux sens.

3
Vladimir Bauer

Je pense que la meilleure solution est ^ C. Emacs utilise ^ C comme préfixe, et je trouve que quand je dois taper ^ C dans un shell, j'en saisis presque toujours deux de toute façon. :-)

unbind-key C-b
set -g prefix C-c
bind-key C-c send-prefix
2
user114905

Personnellement, b est trop loin de Ctrl pour moi. Quand j'utilise tmux, je change toujours la liaison de C-b en C-a. Le principal conflit avec C-a est tout sélectionner, mais je n'ai pas trouvé que c'était un problème avec les programmes que j'utilise avec tmux.

2
DaveParillo

En tant qu'utilisateur GNU emacs, zsh et MS Windows, j'utilise Control-T. (par exemple, dans .screenrc :)

échapper "^ T ^ T"

Oui, Control-T est lié à quelque chose, comme le menu déroulant d'aptitude d'Ubuntu ou le caractère de transposition d'Emacs.

J'ai ignoré C-o parce qu'il me faut deux mains.

2
piyo

J'utilise Caps Lock et, sous OSX, vous devez effectuer certaines tâches spéciales pour le faire fonctionner.

https://Gist.github.com/burtlo/3788048

2
Brad Parks

Vous pouvez utiliser un backtick. Certaines versions plus anciennes de tmux ne supportent pas backtick, vous pouvez donc procéder comme suit (cela ajouterait C-`, C- @ et C-space comme méta à la fois):

# meta prefix - @ - backtick
unbind C-b
set -g prefix C-@
bind C-@ send-prefix
bind C-@ last-window

Je remappe normalement CapsLock en Ctrl, ce qui est encore plus logique avec le backtick.

1
Alex

La plupart des réponses ici utilisent Ctrl dans le cadre d’une combinaison de touches.
Lorsque j'ai utilisé Ctrl, mon petit doigt a commencé à me faire mal parce que je devais toujours le diffuser en Ctrl.
J'utilise Alt-j que je tape avec mon pouce gauche et mon index droit et c'est très pratique. Je n'ai pas non plus trouvé de collision avec d'autres programmes jusqu'à présent.

unbind C-b
set-option -g prefix M-j
1
wullxz

J'aime la suggestion de lier ctrl-\comme préfixe , mais pour que cela fonctionne avec Linux Mint 12, je devais m'échapper de la place. la reliure en bas. Sinon, ça ne prendrait pas. Voir mon .tmux.conf ici: Utiliser tmux avec emacs et vim

0
justingordon

Je pense que les utilisateurs de Mac trouveront le § plus pratique que le backtick.

Sur le clavier non-Mac , le backtick est positionné sur la même touche que le § sur les claviers Mac. Donc, pour profiter du même confort que les personnes qui suggèrent d’utiliser le backtick, utilisez le signe de paragraphe sur un clavier Mac.

Utiliser le backtick sur les claviers Mac est délicat, car il est situé très près du décalage gauche (), du contrôle (⌃) et des touches (). Sur un MacBook, même près de la touche fn- de gauche.

0
nanitous