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


44

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

Comme vous le savez, GNU Screen utilise 'Ca' (Control-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 , telle que "^ Q" ou "` `" (Backtick), mais j'ai du mal à trouver une autre séquence de clés 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 caractère de contrôle de l'écran GNU 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)


5
Pour ne pas être désorienté lors de l'utilisation screensur d'autres systèmes, il vaut mieux rester avec les raccourcis clavier par défaut, ou au moins les apprendre en premier. ^A aenverra par défaut le ^Acombo de touches habituel . C'est un peu gênant si vous utilisez beaucoup ce combo; J'utilise généralement la HOMEclé à la place à cause de cela. Mais cela ne fonctionne pas toujours non plus.
Intuitionné le

Pas d'amour ici pour Ctrl-espace. Fonctionne très bien.
Wildcard

Réponses:


18

Le problème avec Control- Shift- Aest 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 screen de faire la différence.

Vous pourrez peut-être utiliser Cq si vous le faites stty -ixonpour désactiver le «contrôle de flux logiciel» sur le terminal. Je le fais habituellement pour pouvoir utiliser Cs pour effectuer une recherche en ligne de commande.

Vous pourriez considérer C- ^, car il semble être généralement non lié. Il est Control- Shift- 6sur les dispositions de clavier aux États - Unis, 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 with stty quit undefet associez-la en tant que clé de préfixe. Ceci est cependant un peu risqué, car si vous appuyez sur C- \ sur un terminal où la clé de sortie n'a pas été désactivée avec stty , vous risquez de tuer le processus de premier plan au lieu d'activer l' écran .

Je suis passé à tmux il y a un moment. Sa valeur par défaut est Cb car il a été développé sous screen et n’interfère pas avec les valeurs par défaut de screen . J'ai trouvé que Cb fonctionnait assez bien pour moi (j'utilise généralement les touches fléchées pour les mouvements d'un seul caractère sur la ligne de commande du shell, bien que j'utilise Mb et Mf pour se déplacer par mots).

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

Par défaut, Ca Ca est lié à l' autre commande (passer à l'écran le plus récemment actif) à l' écran . Pour que Ca envoie un Ca réel et que les fenêtres se commutent, inscrivez ce qui suit dans votre .screenrc:

escape ^A^A
bind o other

2
Cela sonne bien, puis je me suis rendu compte que dans GNU Screen, taper deux fois sur Ca basculera vers la fenêtre affichée précédemment. Peut-être que je peux mapper "Ca Ca" sur quelque chose d'autre, bien que je ne sois pas vraiment sûr de savoir comment faire ça (on dirait que j'ai besoin de spécifier "escape xy" ou "meta" pour cela). Voir gnu.org/software/screen/ manual / screen.html # Autre fenêtre
Stefan Lasiewski

1
@Stefan Lasiewski: Oups, j'ai oublié que Ca Ca n'envoie pas Ca par défaut. Voir l’ajout à la fin de la réponse pour un peu de configuration qui permet à Ca Ca d’envoyer Ca et Ca o basculer vers la fenêtre précédente.
Chris Johnsen

Fonctionne très bien! Ca Ca enverra un Ca réel à la coque sous-jacente et Ca o 'basculera vers la fenêtre "autre". Pour envoyer «Ca» à Bash, appuyez deux fois sur «Ca». Cela devrait être une opération en dehors de l'écran, et ne devrait pas causer de problèmes.
Stefan Lasiewski

41

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

Control- A(relâche puis)A


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

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


merci, je ne l'ai pas maintenant, même si c'est aussi simple que cela. en effet pas besoin de reconfigurer quoi que ce soit. J'aime mieux ta réponse.
harald

+1 ty - c'est de loin la meilleure option. Ce qui est drôle, c’est que, tout en essayant, j’ai frappé Ca Ca par accident et j’ai trouvé un autre super combo.
kfmfe04

3

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

Je l'utilise.screenrc

escape ^bb

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


0

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


0

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).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.