Comme sauter à la fin d'une ligne est Ctrl+ E, où Epeut être considéré comme une fin, pourquoi saute-t-il au début en utilisant A?
bash
keyboard-shortcuts
xi.lin
la source
la source
emacs
(et dansbash
également), vous pouvez passer au début / fin de la ligne également avecHome
/End
touches par défaut.Réponses:
Il y a deux côtés à la question, le côté technique et le côté historique.
La réponse technique est parce
bash
qu'utilise GNU Readline . Dansreadline
Control-a est lié à la fonctionbeginning-of-line
, vous pouvez le montrer avec:où
\C-a
signifie "Control-a".bind -p
affichera toutes les liaisons (soyez prudentbind
, il est facile de casser votre clavier si vous fournissez accidentellement des options ou des arguments supplémentaires).Certaines des liaisons ci-dessus sont ajoutées par défaut, d'autres que j'ai ajoutées (via
.inputrc
) pour différents terminaux que j'ai utilisés. Depuis bash-2.0, si le terminal termcap contient les capacitéskh
,kH
puis Homeet Endsera défini surbeginning-of-line
etend-of-line
. Les deuxbash
etreadline
sont développés par Chet Ramey , un utilisateur Emacs et également le développeur d'ce
un clone Emacs.(Veuillez noter que cela tente de résumer de nombreuses années d'histoire d'il y a plusieurs décennies et passe sous silence certains détails.)
Maintenant, pourquoi est-ce Control-a en particulier? Readline utilise par défaut des liaisons de type Emacs . Control-a dans GNU Emacs invoque
move-beginning-of-line
, ce que nous considérons maintenant comme la fonction "home".L'EMACS original de Stallman and Steel a été inspiré par l' éditeur E de Fred Wright (un ancien éditeur WYSIWYG) et TECO (un éditeur / langage modal cryptique) - EMACS était un ensemble de macros pour TECO. Voir Essential E [PDF] (de SAIL , 1980). E utilisait cependant Control-Form pour "début de ligne", c'était sur le clavier "DataDisc" qui avait une Controltouche, et une Formtouche. Le clavier de cadet de l' espace de l'époque (manquant d'ailleurs d'une Homeclé, bien qu'il en ait un End) est généralement blâmé pour l'interface du clavier Emacs.
L'une des caractéristiques souhaitables d'EMACS était son utilisation du mode d'édition de ligne en temps réel Control-R de TECO (les TECO sont antérieurs aux terminaux CRT / clavier), vous pouvez voir les raccourcis clavier à la page 6 du MIT AI Lab 1978 ITS Introduction to l'éditeur EMACS [PDF scanné], où ┌ est utilisé pour désigner Control. Dans ce mode, les raccourcis clavier étaient toutes des séquences de contrôle, en grande partie mnémoniques: Control-E Fin de cette ligne , Control-P se déplaçait vers la ligne précédente , Control-N se déplaçait vers la ligne suivante , Control-B en arrière d'un caractère , et pas moins Control -Un mouvement au début de cette ligne , la suggestion de Costas de "première lettre de l'alphabet" pour cela est aussi bonne que n'importe quelle autre.
(Une liaison de clé similaire se trouve dans le
tvlib
package de macros qui visait à faire en sorte qu'EMACS se comporte comme l'éditeur TVEDIT, en liant les contrôles A et E aux phrases en arrière et en avant , mais en utilisant différentes séquences pour le début et la fin de la ligne.)Les liaisons Control-A / Control-E en "mode ^ R" ont été implémentées directement dans ITS TECO (1983, version 1208, voir l'
_teco_.tgz
archive sur le site nocrew PDP10 / ITS , ou sur Github ), bien que je ne puisse pas déterminer plus précisément quand ils sont apparus pour la première fois, et la source TECO n'indique pas pourquoi des fixations particulières ont été choisies. Le document 1978 du MIT EMACS ci-dessus implique qu'en 1978, EMACS n'utilisait pas TECO natif Control-A / Control-E, il est possible que lescrlin
package de macro (ligne d'écran) les ait implémentés.Récapituler:
Voir également:
la source
Parce que Richard Stallman aime Emacs .
Ctrl+ asaute au début de la ligne dans Emacs, et libreadline utilise les mêmes raccourcis clavier que Emacs. Bash utilise libreadline.
la source
set -o vi
, ouecho 'set editing-mode vi' >> ~/.inputrc
, pour obtenir des raccourcis clavier Vim!La lettre "a" a été choisie parce que Control + b et Control + s étaient déjà pris alors ils ont décidé que puisque A était la première lettre de l'alphabet latin, ce serait ce qu'ils utilisaient. Comment puis-je savoir? Parce que j'ai obtenu la réponse aujourd'hui de l'un des développeurs de TECO (prédécesseur d'EMACS) et d'EMACS.
la source