web-dev-qa-db-fra.com

Écran Bash vs. Gnu: Remplacez Ctrl-A par Ctrl-Maj-A

Je suis un nouvel utilisateur de GNU Screen. J'utilise Bash depuis très longtemps et je souhaite essayer GNU Screen.

Comme vous le savez, GNU Screen utilise "C-a" (Contrôle-A) comme caractère de commande. Le problème, c'est que cela interfère avec la fonctionnalité d'édition de ligne dans Bash (et GNU Readline), car Control-A dans Bash se déplacera au début de la ligne. "

Je sais que je peux définir le caractère de commande sur une autre séquence de touches , comme "^ Q" ou "` `" (Backtick), mais j'ai du mal à trouver une autre séquence de touches qui n'est pas déjà utilisée ( ^ Q est utilisé par le terminal, backtick est utilisé lors de l’écriture de scripts Shell). Il semble que le caractère de commande ne puisse comporter qu'un ou deux caractères. Puis-je définir le GNU caractère de contrôle de l'écran comme quelque chose comme "Control-Shift-A"?

(Je ne peux pas utiliser plus d'un hyperlien pour le moment, je ne peux donc pas créer de lien vers la documentation Bash)

43
Stefan Lasiewski

Le problème avec Control-Shift-A est que la plupart des programmes d’émulation de terminal n’envoient pas un code différent de celui envoyé par Control-A, il n'y aurait donc aucun moyen pour écran de faire la différence.

Vous pourrez peut-être utiliser C-q si vous utilisez stty -ixon pour désactiver le "contrôle de flux logiciel" sur le terminal. Je le fais habituellement pour pouvoir utiliser C-s pour effectuer une recherche en ligne de commande.

Vous pourriez considérer C ^, puisqu'il semble être généralement non lié. Il est Control-Shift-6 sur les dispositions de clavier américaines, mais il peut être difficile de taper sur d'autres dispositions.

La plupart des gens n'utilisent jamais le caractère de contrôle tty C-\pour envoyer SIGQUIT. Pour l'utiliser, désactivez la fonctionnalité tty avec avec stty quit undef et associez-la en tant que clé de préfixe. Ceci est cependant un peu risqué, car si vous frappez C-\sur un terminal où la clé de sortie n’a pas été désactivée avec stty , vous risquez de tuer processus de premier plan au lieu d'activer l'écran .

Je suis passé à tmux il y a quelque temps. Sa valeur par défaut est Cb car il a été développé sous screen et n’interfère pas avec screen par défaut . J'ai constaté que C-b fonctionne assez bien pour moi (j'utilise généralement les touches fléchées pour les déplacements d'un seul caractère sur la ligne de commande Shell, bien que j'utilise M-b et M-f pour se déplacer par mots).

Incidemment, l'auteur de tmux utilise Ca dans ses sessions principales et tape toujours deux fois Ca (que ce soit dans un tmux session ou non). Si vous êtes prêt à adopter cette habitude, cela semble être un compromis décent, car le deuxième C-a devrait être un échec dans la plupart des contextes d'édition comme celui d'Emacs. Cela ne fonctionnerait pas, donc si vous utilisiez souvent des programmes/contextes en dehors de l'écran où le second C-a ne serait pas un no-op.

Par défaut, Ca Ca est lié à la commande Autre (passer à l'écran le plus récemment actif) dans l'écran . Pour que C-a C-a envoie un C-a réel et que C-a change de fenêtre, indiquez ce qui suit dans votre .screenrc:

escape ^A^A
bind o other
18
Chris Johnsen

Pas besoin de solution de contournement.
Pour aller au début de la ligne lorsque vous utilisez screen dans bash, utilisez

Control-A (relâche puis) A


En général, s’il ya un caractère de contrôle d’écran en conflit avec un raccourci bash, le premier du raccourci bash Control sera remplacé par Control-A

De même pour d'autres raccourcis d'édition de ligne.

40
skyshock21

J'utilise ceci .screenrc

escape ^bb

Exemple: pour vous détacher, tapez ctrl-b d

3
guettli

J'utilise C-\pour Screen et je ne le recommanderai jamais assez. Vous pouvez utiliser n'importe quelle autre définition de clé sur un accident, mais pas généralement C- \. C'est ce que j'aime à ce sujet.

3
MikeHoss

J'utilise ctrl-_ (qui peut également être produit par ctrl + 7 et généralement ctrl + /) avec screen/tmux.

0
graywh

J'utilise ctrl-z la plupart du temps, mais j'utilise aussi ctrl-x pour certains. Je n'utilise pas beaucoup l'interruption 'stop', mais quand c'est nécessaire, je peux taper ^ zz. Cela me permet également de démarrer des sessions d'écran secondaires sur des serveurs distants utilisant la commande par défaut ctrl-a. Et si je démarre une troisième session (sur un troisième serveur), je peux utiliser ctrl-x. Ctrl-x est la fonction lockscreen qui, dans de nombreux environnements, n’est pas très habituelle (l’écran s’exécutant souvent dans un émulateur de terminal).

0
Arcege