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


L'écran va avec Ctrl+UNE. tmux d'autre part, comme développé dans les utilisations d'écran Ctrl+B. Les deux frappes, cependant, sont également utilisées dans les éditeurs, les shells, etc. Ainsi, le choix de l'un 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 est le moins en conflit avec les raccourcis des autres programmes et des coques?


83


origine


"lequel est le moins en conflit avec d'autres programmes?" n'a rien à voir avec l'opinion. - iconoclast
Après avoir changé ~/.tmux.conf n'oubliez pas de redémarrer le serveur tmux pour que les modifications prennent effet (superuser.com/q/188491/105108). - ks1322


Réponses:


je pense ^\ (alias. ^|) est la meilleure si elle se trouve dans une position pratique sur votre clavier. Ses utilisations dans d'autres programmes sont assez rares:

  • envoi SIGQUIT à un processus
  • abandonner pour ou pendant des boucles dans un shell quand ^C est intercepté
  • toggle-input-method dans emacs

Je ne connais pas d'autres utilisations. Veillez à ne pas tuer accidentellement un processus en dehors de tmux ou screen après s'y être habitué. Cela m'est arrivé seulement une fois depuis quelques années.

~/.tmux.conf

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

~/.screenrc

escape ^|^|

45



J'ai essayé cela, mais tmux se plaint de l'utilisation de C-`. Can I escape the `le personnage en quelque sorte? - Jason
Juste pour laisser savoir à quelqu'un d'autre, vous devriez écrire 'C-\' au lieu de `C- \` dans la configuration de tmux. - gns-ank
N'oubliez pas de tmux source-file /path/to/tmux.conf lorsque vous avez fini d'essayer les nouveaux paramètres - user72923
mais alors je prends l'habitude de cette commande, et quand j'oublie que je suis à l'écran, je commence accidentellement à envoyer des SIGQUITs ... - Kache
"Par défaut, si la disposition de votre clavier est bien positionnée, cela signifie-t-il que vous utilisez un remappage populaire qui rend C- \ pratique?" - storypixel


Pour ceux qui veulent utiliser backtick comme échappement dans tmux, vous voudrez ajouter:

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

Ce dernier est important, sinon vous ne pouvez pas taper un backtick à d'autres fins :-)


43



Backtick semble être une bonne idée jusqu'à ce que vous colliez du code SQL ... - Synchro
@ Synchro sur tmux 1.8 ce n'est plus un problème grâce à l'option assumer-coller-temps qui est activée par défaut (définie à 1ms). Vois ici: sourceforge.net/p/tmux/tmux-code/ci/ - sickill
J'ai trouvé cette question à la recherche d'alternatives au backtick car elle commençait à poser problème après m'être habitué à utiliser des backticks au lieu de $() en coquilles. En outre, cela devient une douleur une fois que vous commencez à écrire beaucoup de Markdown. Je l'utilise depuis plusieurs années, mais malheureusement je vais devoir le changer maintenant. - kirelagin
Dans .tmux.conf j'ai aussi bind-key C-a set-option -g prefix C-a. Chaque fois que je dois utiliser des backticks, je frappe `-Ctrl-a qui définit mon préfixe à C-a. Et j'ai bind-key C-b set-option -g prefix ` pour que je puisse frapper C-a-C-b retourner - boris
Et si vous écriviez des démarques? Comment échappez-vous au préfixe? - OJFord


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, c'est la valeur par défaut dans RatPoison (il s'agit d'un gestionnaire de fenêtres X qui n'a pas besoin de souris). J'ai utilisé Ctrl + O lors de l'utilisation d'écrans imbriqués: Ctrl + O pour les écrans externes et Ctrl + A pour les écrans internes. Bien travaillé, mais un peu effrayé mes collègues. :-)

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


19



Pour les utilisateurs d'Emacs, Ctrl + O semble être le meilleur choix: dans emacs, il suffit "d'ouvrir une nouvelle ligne au curseur" et en bash "de créer une séquence de commandes". - Flow
+1 si vous êtes d'accord avec les opérations ctrl droite, cela ressemble à une bonne sauvegarde. Je suis un gaucher moi-même ;-) - DaveParillo
Je pense que Ctrl + O rompt vim - Mu Qiao
Je suis d'accord avec @MuQiao. Ctrl-o est utilisé dans Vim pour sauter à une position de curseur plus ancienne (équivalent du bouton retour dans de nombreux IDE), une fonctionnalité que j'utilise très souvent lors de la navigation du code dans Vim. Ctrl-b est synonyme de PageUp in Vim. Je n'utilise pas du tout Ctrl-b sur Vim. Donc, pour les utilisateurs de Vim comme moi, Ctrl-b est toujours un meilleur choix que Ctrl-o. J'utilise C-j comme clé de préfixe car C-j est synonyme de j ou <Down> dans Vim et personne n'utilise C-j pour déplacer une ligne dans Vim. J'ai ceci dans mon ~ / .tmux.conf: set -g prefix2 C-j; bind-key C-j send-prefix -2 - Susam Pal
C-j en conflit avec CtrlP. Se déplacer de haut en bas dans la liste des tampons C-k et C-j respectivement - blockloop


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


11



Très bonne idée, merci pour le partage. - AhHatem


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

Je relie 's' à 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. Il est très rapide de faire un geste de 1 (backtick) 1, (backtick) 2, (backtick) 3 pour permuter entre les fenêtres.

Le problème avec l'utilisation de backtick dans un environnement Unix est lorsque vous essayez de couper et coller du code de script shell / perl. Pour cette raison, je lie la touche 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 échangera l'évasion en Ctrl-O pour les opérations de copier / coller. J’ai trouvé qu’il était facile de taper sur une double coche et que c’est un bon compromis pour la plupart des opérations sur écran.

Revisitez 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"

11



Solution créative Je suis impressionné. - staticsan
bind-key -n F11 set -g prefix `clé-bind -n F12 définit -g préfixe C-o Mises à jour pour tmux au cas où d'autres voudraient l'adapter. - milkypostman
Existe-t-il un moyen de définir une temporisation minimale pour le combo préfixe + other_key dans tmux alors en collant le code, il ne déclenche aucune commande mais en tapant backtick + key à partir du clavier parce que la pause entre backtick et l'autre était plus longue ? - sickill


j'utilise Ctrl-Q dans tmux et cela a bien fonctionné jusqu'à présent. Je dois cependant mentionner que cela entre en conflit avec le contrôle de flux shell. Par défaut, Ctrl-Qest utilisé pour réactiver la sortie après l'avoir arrêté avec Ctrl-S. Ayant été surpris par une coquille coincée à plusieurs reprises après avoir heurté accidentellement Ctrl-S, J'ai appris à ne pas presser Ctrl-S.

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

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

10



J'ai adopté ce lien et je le trouve très pratique. Merci! - aymericbeaumet
Mon préféré aussi, puisque je désactive toujours le flux de contrôle du terminal. - Jack O'Connor
Utilisé dans emacs pour quote-inserted. Exemple d'utilisation (dans emacs): si je veux rechercher le caractère de tabulation suivant - <Ctrl-s>+<Ctrl-q>+<TAB> - nhed


Une suggestion tardive: ctrl-s. ctrl-s a un certain nombre d'avantages:

  1. Sur la rangée à la maison.
  2. Toujours près de ctrl-a (En fait, pour la plupart des typographes, il utilisera les deux mêmes doigts ctrl-a), de sorte que la mémoire musculaire passe de ctrl-a à ctrl-s est trivial - pour moi, cela est devenu une seconde nature dans environ une heure après le premier essai.
  3. Libère ctrl-a pour les opérations de type "back to begin of line" ou vim-style "emacs". Ou bien, pour exécuter l'écran à l'intérieur d'une sous-fenêtre tmux sans avoir à vous soucier d'échapper des caractères de préfixe pour contrôler l'instance de l'écran intégré. (Je le fais souvent en utilisant un tmux local avec des volets contenant des sessions ssh vers des serveurs distants, dans lesquels je lance un écran)
  4. Ne pas remplacer ou ajouter des exigences d'échappement à une autre fonctionnalité de terminal couramment utilisée. rien la grande majorité des gens utilisent aujourd'hui ctrl-s!

Bien sûr, la raison pour laquelle rien n'est sur ctrl-s est que dans le terminal, il est traditionnellement utilisé pour le contrôle de flux, remontant aux jours précédant les outils de pagination comme more et less étaient communs. Je suis sûr que certains programmes de terminaux GUI ont encore cette fonctionnalité de contrôle de flux activée par défaut, mais je ne l'ai pas encore rencontré; Les programmes d'interface graphique 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 depuis (par exemple) un terminal Linux brut, mais plutôt depuis un terminal basé sur une interface graphique, alors je vous recommande de donner ctrl-s un essai; cela a rendu la compression plus rapide pour tmux et l'écran beaucoup plus pratique pour moi.


6



Ctrl-s est la recherche en avant, quand je vais loin avec Ctrl-r :) - Jack O'Connor
Ctrl-S est commun pour arrêter la sortie de la console (aka le "geler"). Cela m'a mordu quand j'ai essayé de le remapper. - Dave


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

Il laisse vos doigts libres de sauter instantanément à la commande que vous souhaitez taper. Essaie.


5



Cela n'a pas duré longtemps - je reviens à ^ j. ^ L'espace est trop similaire aux commandes que j'utilise pour appeler des applications au niveau OSX (Spotlight, QuickSilver, DTerm). - terrace
J'utilise aussi C-j. C'est ce que j'utilise dans mon ~ / .tmux.conf: set -g prefix2 C-j; bind-key C-j send-prefix -2 - Susam Pal
J'utilise également C-Space, il n'est pas utilisé presque partout ailleurs. - mahdix
C-space est parfait pour moi, comme je suis sur un Chromebook: D - Eric Nguyen


J'ai entendu parler de `(backtick) étant utilisé et vous devez juste le taper deux fois pour un backtick réel. Peut-être mieux pour les utilisateurs vi qui sont habitués à l'action (à moins que vous ne fassiez le verrouillage des majuscules).


4



Comment pouvez-vous définir backtick pour tmux? - Alexandre Nizoux
Quelque chose comme: détacher C-b; set -g prefix ''; bind ''send-prefix; voir la réponse de Darren Hall ci-dessus. - bluehavana
Je suis avec un backtick depuis environ un an et je ne reviendrai jamais sur le préfixe à deux clés / combo. Essaie. - sickill