Al igual que saltar al final de una línea es Ctrl+ E, ¿dónde Ese puede pensar como final? ¿Por qué salta al principio A?
                    
                        bash
                                keyboard-shortcuts
                                
                    
                    
                        xi.lin
fuente
                
                fuente

emacs(ybashtambién en) puede saltar al principio / final de la línea también con las teclasHome/Endpor defecto.Respuestas:
Hay dos lados en la pregunta, el lado técnico y el lado histórico.
La respuesta técnica es porque
bashusa GNU Readline . EnreadlineControl-a está vinculado a la funciónbeginning-of-line, puede mostrar esto con:donde
\C-asignifica "Control-a".bind -pmostrará todos los enlaces (tenga cuidado al usarlosbind, es fácil romper su teclado si accidentalmente proporciona opciones o argumentos adicionales).Algunos de los enlaces anteriores se agregan de forma predeterminada, otros los he agregado (vía
.inputrc) para varios terminales que he usado. Desde bash-2.0, si el terminal termcap contiene las capacidadeskh, ykHluego Homey Endse establecerá enbeginning-of-lineyend-of-line. Ambosbashyreadlineestán desarrollados por Chet Ramey , un usuario de Emacs y también el desarrollador deceun clon de Emacs.(Tenga en cuenta que esto se esfuerza por resumir muchos años de historia de hace muchas décadas, y pasa por alto algunos detalles).
Ahora, ¿por qué es Control-a en particular? Readline utiliza por defecto enlaces tipo Emacs . Control-a en GNU Emacs invoca
move-beginning-of-line, lo que consideramos como la función "home" ahora.El EMACS original de Stallman and Steel se inspiró en el editor E de Fred Wright (uno de los primeros editores WYSIWYG) y TECO (un editor / lenguaje críptico modal): EMACS era un conjunto de macros para TECO. Ver Essential E [PDF] (de SAIL , 1980). Sin embargo, E usó Control-Form para "inicio de línea", esto estaba en el teclado "DataDisc" que tenía una Controltecla y una Formtecla. El teclado de cadetes espaciales de la época (que por cierto carece de una Hometecla, aunque tenía una End) se atribuye comúnmente a la interfaz del teclado Emacs.
Una de las características deseables de EMACS fue su uso del modo de edición de línea "en tiempo real" Control-R de TECO (TECO es anterior a los terminales CRT / teclado), puede ver las asociaciones de teclas en la página 6 del MIT AI Lab 1978 ITS Introducción a el editor EMACS [PDF escaneado], donde ┌ se usa para denotar Control. En este modo, las combinaciones de teclas eran todas secuencias de control, en gran parte mnemotécnicas: Control-E Fin de esta línea , Control-P moverse a la línea anterior , Control-N moverse a la siguiente línea , Control-B hacia atrás un personaje , y no menos importante Control -Un paso al comienzo de esta línea , la sugerencia de Costas de "primera letra del alfabeto" para esto es tan buena como cualquiera.
(Una combinación de teclas similar se encuentra en el
tvlibpaquete de macros que tiene como objetivo hacer que EMACS se comporte como el editor TVEDIT, vinculando el control A y E a la oración hacia adelante y hacia atrás , pero usó diferentes secuencias para el comienzo y el final de la línea).Los enlaces Control-A / Control-E en "modo ^ R" se implementaron directamente en el ITS TECO (1983, versión 1208, ver el
_teco_.tgzarchivo en el sitio nocrew PDP10 / ITS , o en Github ), aunque no puedo determinar con mayor precisión cuando aparecieron por primera vez, y la fuente TECO no indica por qué se eligieron enlaces específicos. El documento MIT EMACS de 1978 anterior implica que en 1978 EMACS no utilizó TECO Control-A / Control-E nativo, es posible que elscrlinpaquete macro (línea de pantalla) los haya implementado.Recordar:
Ver también:
fuente
Porque a Richard Stallman le gusta Emacs .
Ctrl+ aestá saltando al comienzo de la línea en Emacs, y libreadline usa las mismas combinaciones de teclas que Emacs. Bash usa libreadline.
fuente
set -o vioecho 'set editing-mode vi' >> ~/.inputrcobtener combinaciones de teclas de Vim!Se eligió la letra "a" porque Control + b y Control + s ya se tomaron, por lo que decidieron que, dado que A era la primera letra del alfabeto latino, sería lo que usarían. ¿Cómo puedo saber? Porque hoy recibí la respuesta de uno de los desarrolladores de TECO (predecesor de EMACS) y EMACS.
fuente