Jak przeskakiwanie do końca linii to Ctrl+ E, gdzie Emożna ją traktować jako koniec, dlaczego przeskakuje do początku używania A?
bash
keyboard-shortcuts
xi.lin
źródło
źródło
emacs
(ibash
również w) możesz przeskoczyć do początku / końca linii również domyślnie za pomocą klawiszyHome
/End
.Odpowiedzi:
Pytanie ma dwie strony, techniczną i historyczną.
Odpowiedź techniczna jest taka, ponieważ
bash
wykorzystuje GNU Readline . Wreadline
Control-a jest związany z funkcjąbeginning-of-line
, możesz to pokazać za pomocą:gdzie
\C-a
oznacza „Control-a”.bind -p
pokaże wszystkie wiązania (zachowaj ostrożnośćbind
, łatwo jest złamać klawiaturę, jeśli przypadkowo podasz dodatkowe opcje lub argumenty).Niektóre z powyższych powiązań są dodawane domyślnie, inne dodałem (przez
.inputrc
) dla różnych używanych terminali. Od wersji bash-2.0, jeśli terminal termcap zawiera możliwościkh
, akH
następnie Homei Endzostanie ustawiony nabeginning-of-line
iend-of-line
. Zarównobash
ireadline
zostały opracowane przez Chet Ramey , użytkownik Emacs, a także twórcace
klonu Emacs.(Należy pamiętać, że stara się to podsumować wiele lat historii sprzed wielu dziesięcioleci i zawiera pewne szczegóły.)
Dlaczego w szczególności jest to Control-a? Readline domyślnie używa powiązań podobnych do Emacsa . Control-a w GNU Emacs wywołuje
move-beginning-of-line
funkcję, którą obecnie uważamy za funkcję „home”.Oryginalny EMACS firmy Stallman and Steel został zainspirowany edytorem E Freda Wrighta (wczesny edytor WYSIWYG) i TECO (tajemniczy edytor modalny / język) - EMACS był zestawem makr dla TECO. Patrz Essential E [PDF] (z SAIL , 1980). E użył jednak formularza kontrolnego do „początku linii”, to było na klawiaturze „DataDisc”, która miała Controlklawisz i Formklawisz. Klawiatura space-kadet czasu (brakuje Homeklucza przy okazji, choć mieliśmy End) jest powszechnie obwiniany dla interfejsu klawiatury Emacs.
Jedną z pożądanych cech EMACS było wykorzystanie trybu edycji linii w czasie rzeczywistym Control-R TECO Control-R (TECO wyprzedza terminale CRT / klawiaturę). Kluczowe powiązania można zobaczyć na stronie 6 MIT AI Lab 1978 ITS Wprowadzenie do edytor EMACS [zeskanowany plik PDF], w którym ┌ oznacza Kontrolę. W tym trybie wszystkie przypisania klawiszy były sekwencjami kontrolnymi, w dużej mierze mnemonicznymi: Control-E Koniec tej linii , Control-P przejście do poprzedniej linii , Control-N przejście do następnej linii , Control-B do tyłu o jeden znak , a także kontrola -Przejście na początek tej linii , sugestia Costasa dotycząca „pierwszej litery alfabetu” jest tak dobra, jak każda inna.
(Podobne wiązanie klawiszy znajduje się w
tvlib
pakiecie makr, które miały na celu sprawienie, aby EMACS zachowywał się jak edytor TVEDIT, wiążąc kontrolę A i E do zdania do tyłu i do przodu , ale używał różnych sekwencji na początku i na końcu linii.)Wiązania Control-A / Control-E w „trybie ^ R” zostały zaimplementowane bezpośrednio w ITS TECO (1983, wersja 1208, patrz
_teco_.tgz
archiwum na stronie nocrew PDP10 / ITS lub na Github ), chociaż nie mogę dokładniej określić kiedy pojawiły się po raz pierwszy, a źródło TECO nie wskazuje, dlaczego wybrano konkretne wiązania. Powyższy dokument MIT EMACS z 1978 r. Sugeruje, że w 1978 r. EMACS nie używał natywnego sterownika TECO Control-A / Control-E, możliwe jest, żescrlin
pakiet makr (linia ekranu) zaimplementował je.Przypomnę:
Zobacz też:
źródło
Ponieważ Richard Stallman lubi Emacsa .
Ctrl+ aprzeskakuje na początek linii w Emacsie, a libreadline używa tych samych klawiszy, co Emacs. Bash używa libreadline.
źródło
set -o vi
, lubecho 'set editing-mode vi' >> ~/.inputrc
uzyskać skróty klawiszowe Vima!Litera „a” została wybrana, ponieważ Control + bi Control + s zostały już zajęte, więc zdecydowali, że skoro A była pierwszą literą alfabetu łacińskiego, to będzie to, czego użyli. Skąd mam wiedzieć? Ponieważ dzisiaj otrzymałem odpowiedź od jednego z twórców TECO (poprzednika EMACS) i EMACS.
źródło