Come saltare alla fine di una linea è Ctrl+ E, dove si Epuò pensare come fine, perché salta all'inizio usando A?
emacs
(e bash
anche in) puoi saltare all'inizio / fine della riga anche con i tasti Home
/ End
per impostazione predefinita.
Come saltare alla fine di una linea è Ctrl+ E, dove si Epuò pensare come fine, perché salta all'inizio usando A?
emacs
(e bash
anche in) puoi saltare all'inizio / fine della riga anche con i tasti Home
/ End
per impostazione predefinita.
Risposte:
Ci sono due lati della questione, il lato tecnico e il lato storico.
La risposta tecnica è perché bash
utilizza GNU Readline . In readline
Control-a è associato alla funzione beginning-of-line
, puoi mostrarlo con:
$ bind -q beginning-of-line
beginning-of-line can be invoked via "\C-a", "\M-OH", "\M-[1~", "\M-[7~", "\M-[H".
dove \C-a
significa "Control-a".
bind -p
mostrerà tutti i binding (attenzione all'utilizzo bind
, è facile rompere la tastiera se si forniscono accidentalmente opzioni o argomenti aggiuntivi).
Alcune delle associazioni di cui sopra vengono aggiunte per impostazione predefinita, altre le ho aggiunte (tramite .inputrc
) per vari terminali che ho usato. Da bash-2.0, se il termcap terminale contiene le funzionalità kh
, e kH
quindi Homee Endsarà impostato su beginning-of-line
e end-of-line
. Entrambi bash
e readline
sono sviluppati da Chet Ramey , un utente Emacs e anche lo sviluppatore di ce
un clone Emacs.
(Si noti che questo cerca di riassumere molti anni di storia di molti decenni fa e ripercorre alcuni dettagli.)
Ora, perché è Control-a in particolare? Readline utilizza per impostazione predefinita le associazioni simili a Emacs . Control-a in GNU Emacs invoca move-beginning-of-line
, quella che consideriamo ora la funzione "home".
Stallman e EMACS originali di acciaio è stato ispirato da Fred Wright E editore (un editor WYSIWYG precoce) e TECO (un criptico editor di modal / lingua) - EMACS era un insieme di macro per TECO. Vedi Essential E [PDF] (da SAIL , 1980). Tuttavia, ho usato Control-Form per "inizio riga", questo era sulla tastiera "DataDisc" che aveva un Controltasto e un Formtasto. La tastiera del cadetto spaziale dell'epoca (mancava comunque un Hometasto, sebbene avesse una End) è comunemente accusata dell'interfaccia della tastiera Emacs.
Una delle caratteristiche desiderabili di EMACS era l'uso della modalità di modifica della linea "real-time" di Control-R di TECO (TECO precede i terminali CRT / tastiera), puoi vedere le associazioni dei tasti a pagina 6 del MIT AI Lab 1978 ITS Introduzione a l'editor EMACS [PDF scansionato], dove ┌ viene utilizzato per indicare il controllo. In questa modalità, le combinazioni di tasti erano tutte sequenze di controllo, in gran parte mnemoniche: Control-E Fine di questa riga , Control-P si sposta sulla riga precedente , Control-N si sposta sulla riga successiva , Control-B all'indietro di un carattere e non ultimo Control -Un passaggio all'inizio di questa riga , il suggerimento di Costas di "prima lettera dell'alfabeto" per questo è buono come un altro.
(Un simile key binding è nel tvlib
pacchetto macro che mirava a far funzionare EMACS come l'editor TVEDIT, associando il controllo A ed E alla frase indietro e avanti , ma utilizzava sequenze diverse per l'inizio e la fine della riga.)
I collegamenti Control-A / Control-E in "^ R mode" sono stati implementati direttamente in ITS TECO (1983, versione 1208, vedi l' _teco_.tgz
archivio sul sito nocrew PDP10 / ITS o su Github ), anche se non riesco a determinare in modo più accurato quando sono apparsi per la prima volta, e la fonte TECO non indica perché sono stati scelti alcuni vincoli particolari. Il documento EMACS del MIT del 1978 qui sopra implica che nel 1978 EMACS non ha usato Control-A / Control-E nativo TECO, è possibile che il scrlin
pacchetto macro (riga dello schermo) abbia implementato questi.
Per ricapitolare:
Guarda anche:
Perché a Richard Stallman piace Emacs .
Ctrl+ asta saltando all'inizio della linea in Emacs e libreadline usa gli stessi collegamenti chiave di Emacs. Bash usa libreadline.
set -o vi
, o echo 'set editing-mode vi' >> ~/.inputrc
, per ottenere le combinazioni di tasti di Vim!
La lettera "a" è stata scelta perché Control + b e Control + s erano già stati presi, quindi decisero che poiché A era la prima lettera dell'alfabeto latino che sarebbe stata quella che usavano. Come lo so? Perché oggi ho ricevuto la risposta da uno degli sviluppatori di TECO (predecessore di EMACS) ed EMACS.