Como pular para o final de uma linha é Ctrl+ E, onde Epode ser considerado o fim, por que pula para o início do uso A?
bash
keyboard-shortcuts
xi.lin
fonte
fonte
emacs
(ebash
também em) você pode pular para o início / fim da linha também comHome
/End
keys por padrão.Respostas:
Existem dois lados da questão, o lado técnico e o lado histórico.
A resposta técnica é porque
bash
usa o GNU Readline . Noreadline
Control-a está vinculado à funçãobeginning-of-line
, você pode mostrar isso com:onde
\C-a
significa "Control-a".bind -p
mostrará todas as ligações (tenha cuidado ao usarbind
, é fácil quebrar o teclado se você acidentalmente fornecer opções ou argumentos adicionais).Algumas das ligações acima são adicionadas por padrão, outras adicionei (via
.inputrc
) para vários terminais que usei. Desde o bash-2.0, se o termcap do terminal contiver os recursoskh
, ekH
então Homee Endserá definido comobeginning-of-line
eend-of-line
. Ambosbash
ereadline
são desenvolvidos por Chet Ramey , um usuário do Emacs e também o desenvolvedor dece
um clone Emacs.(Observe que isso se esforça para resumir muitos anos de história de muitas décadas atrás e encobrir alguns detalhes.)
Agora, por que é Control-a em particular? O Readline usa, por padrão, ligações do tipo Emacs . Control-a no GNU Emacs chama
move-beginning-of-line
, o que consideramos ser a função "home" agora.O EMACS original de Stallman and Steel foi inspirado no editor E de Fred Wright (um dos primeiros editores do WYSIWYG) e no TECO (um editor / linguagem modal enigmática) - o EMACS era um conjunto de macros para o TECO. Veja E essencial [PDF] (de SAIL , 1980). E, no entanto, usou o Control-Form para "início de linha", que estava no teclado "DataDisc", que tinha uma Controltecla e uma Formtecla. O teclado de cadete espacial da época (sem uma Hometecla, apesar de ter uma End) é comumente responsabilizado pela interface do teclado do Emacs.
Uma das características desejáveis do EMACS foi o uso do modo de edição de linha Control-R "em tempo real" do TECO (o TECO é anterior aos terminais CRT / teclado). Você pode ver as combinações de teclas na página 6 do MIT AI Lab 1978 ITS Introduction to o editor EMACS [PDF digitalizado], em que ┌ é usado para denotar Control. Nesse modo, as combinações de teclas eram todas seqüências de controle, amplamente mnemônicas: Control-E Fim dessa linha , Control-P move para a linha anterior , Control-N move para a linha anterior , Control-N move para a próxima linha , Control-B retrocede um caractere e, pelo menos, Control -Um passo para o início desta linha , a sugestão de Costas de "primeira letra do alfabeto" para isso é tão boa quanto qualquer outra.
(Uma ligação de chave semelhante está no
tvlib
pacote de macro que visa fazer o EMACS se comportar como o editor TVEDIT, vinculando os controles A e E à frase anterior e posterior , mas utilizou sequências diferentes para o início e o fim da linha.)As ligações Control-A / Control-E no "^ modo R" foram implementadas diretamente no ITS TECO (1983, versão 1208, consulte o
_teco_.tgz
arquivo no site do nocrew PDP10 / ITS ou no Github ), embora não seja possível determinar com mais precisão quando eles apareceram pela primeira vez, e a fonte do TECO não indica por que foram escolhidas quaisquer ligações em particular. O documento de 1978 do MIT EMACS acima implica que, em 1978, o EMACS não usou o Control-A / Control-E nativo do TECO, é possível que oscrlin
pacote macro (linha de tela) os tenha implementado.Para recapitular:
Veja também:
fonte
Porque Richard Stallman gosta de Emacs .
Ctrl+ aestá pulando para o início da linha no Emacs, e o libreadline usa as mesmas combinações de teclas do Emacs. O Bash usa libreadline.
fonte
set -o vi
ouecho 'set editing-mode vi' >> ~/.inputrc
obter as combinações de teclas do Vim!A letra "a" foi escolhida porque Control + be Control + s já foram escritos, então eles decidiram que, como A era a primeira letra do alfabeto latino, seria o que eles usavam. Como eu sei? Porque recebi a resposta hoje de um dos desenvolvedores do TECO (antecessor do EMACS) e do EMACS.
fonte