web-dev-qa-db-fra.com

Utilisation prévue de ctrl + T dans bash?

J'ai remarqué que bash a un raccourci pour ctrl+T qui permute les deux derniers caractères avant le curseur.

Je me demande pourquoi les ingénieurs ont décidé d'inclure cela.

  • A-t-il été hérité d'une convention précédente?
  • Ou existe-t-il un objectif pratique pour lequel cela est couramment utilisé?
49
Philip Kirkbride

Ceci est hérité (par readline) de GNU Emacs, qui utilise control-T pour transposer des caractères:

https://www.gnu.org/software/emacs/manual/html_node/emacs/Transpose.html

Notez que l'éditeur de ligne de bash utilise par défaut le mode Emacs, mais vous pouvez également le basculer en mode vi, si vous préférez.

27
Dimitry Andric

Il est très utile de corriger rapidement les fautes de frappe:

sl

devient

ls

avec un seul CtrlT.

Vous pouvez utiliser AltT pour permuter également les mots ( par exemple lors du basculement entre service et systemctl...).

Historiquement parlant, le CtrlT caractéristique est venue à Bash d'Emacs selon toute vraisemblance. Il a probablement été copié sur Emacs par un autre éditeur; il était présent dans l'éditeur E de Stanford (voir Essential E page 13) en 1980, et E a eu un fort impact sur Richard Stallman (comme décrit dans Libre comme dans Freedom ). Il a été implémenté dans les toutes premières versions de Bash, avant sa première version en 1989, quand il a été retiré dans la bibliothèque readline où il vit aujourd'hui (la toute première entrée dans le readlineChangeLog fait allusion à cela).

64
Stephen Kitt

Cette combinaison de touches, une liaison héritée de l'éditeur de texte emacs, fait permuter les 2 derniers caractères tapés à la fin de la ligne, utilisée au milieu d'une ligne, elle permute le caractère à gauche de le curseur et celui sous le curseur.

Il peut sembler vain d'avoir une liaison pour une fonctionnalité aussi rarement utilisée qui peut être facilement obtenue avec quelques touches de plus. Les anciens temporisateurs tels que je l'utilise assez souvent et permettaient de gagner du temps de transmission à l'époque des modems à 300 bauds, à la fin des années 70, en particulier au milieu des longues lignes.

Une commande similaire et plus utile, liée à Alt+T, transpose les mots à gauche et à droite du curseur.

T a été choisi car il s'agit de la lettre initiale de transpose. D'autres fixations avec une origine similaire comprennent:

  • Ctrl+B, pour en arrière, déplace le curseur d'une position vers la gauche,
    • Alt+B déplace le curseur d'un mot vers la gauche,
  • Ctrl+F, pour avant, déplace le curseur d'une position vers la droite,
    • Alt+F déplace le curseur d'un mot vers la droite,
  • Ctrl+A, pour Anfang ou ante, déplace le curseur au début de la ligne,
  • Ctrl+E, pour end, déplace le curseur à la fin de la ligne,
  • Ctrl+N, pour suivant, récupère la ligne suivante,
  • Ctrl+P, pour précédent, récupère la ligne suivante,
  • Ctrl+D, pour supprimer, supprime le caractère sous le curseur,
    • Alt+D supprime le mot sous le curseur,
  • Ctrl+K, pour kill, coupe la fin de la ligne,
  • Ctrl+Y, pour yank, colle le contenu du presse-papiers,

Ces liaisons, implémentées dans le package GNU readline, sont donc disponibles dans tous les programmes qui l'utilisent pour les entrées utilisateur, comme bash, mais aussi gdb, bc, ...

Certains sont également disponibles dans d'autres environnements: la ligne de saisie d'URL de Firefox, les champs de saisie de texte dans l'interface graphique OS/X et de nombreux gestionnaires de fenêtres basés sur X.

vim les utilisateurs peuvent sélectionner les liaisons correspondantes via une variable d'environnement.

Il est très utile de corroder les tpyos de smiple wehre yuo haev qui ont accidentellement transposé des paires de lettres.

(Ayant un RSI sévère dans les deux poignets, je finis par l'utiliser beaucoup, personnellement ...)

10
fluffy

Une correction très rapide des fautes de frappe. effectue le bloc de correction immédiat 2 avant le coursier.

Si vous avez tapé ls- et vous voulez un espace entre ls & trait d'union alors vous pouvez utiliser Ctrl + T

Cela fonctionne si vous avez un espace après le trait d'union, puis faites Ctrl + T

4
Mongrel