답변:
이 문제에는 기술적 측면과 역사적 측면이 있습니다.
기술적 답변은 GNU Readline을bash
사용 하기 때문 입니다. 에서 제어가-A 기능에 바인딩 ,이를 함께 표시 할 수 있습니다 :readline
beginning-of-line
$ bind -q beginning-of-line
beginning-of-line can be invoked via "\C-a", "\M-OH", "\M-[1~", "\M-[7~", "\M-[H".
여기서 \C-a
"Control-a"를 의미합니다.
bind -p
은 모든 바인딩을 표시합니다 (을 사용하면 조심 bind
하십시오. 실수로 추가 옵션이나 인수를 제공하면 키보드를 쉽게 깰 수 있습니다).
위의 바인딩 중 일부는 기본적으로 추가되며 다른 바인딩은 .inputrc
내가 사용한 다양한 터미널에 대해 (통해 ) 추가했습니다 . 떠들썩한 파티-2.0 이후, 단말은 TERMCAP 기능이 포함 된 경우 kh
, 그리고 kH
다음을 Home하고 End설정한다 beginning-of-line
과 end-of-line
. 두 bash
과 readline
에서 개발 쳇 레이미 , 이맥스 사용자도 개발자 ce
이맥스 클론.
(이것은 수십 년 전부터 수년간의 역사를 요약하려고 노력하며 일부 세부 사항에 대한 광택을 나타냅니다.)
이제 왜 Control-a입니까? Readline 은 기본적으로 Emacs와 같은 바인딩을 사용 합니다. GNU Emacs의 Control-a는 move-beginning-of-line
현재 "홈"기능으로 간주 되는를 호출합니다 .
Stallman and Steel의 원래 EMACS 는 Fred Wright의 E 편집자 (WYSIWYG 초기 편집자)와 TECO (암호화 된 모달 편집자 / 언어) 에서 영감을 얻었습니다. EMACS 는 TECO 의 매크로 집합입니다 . Essential E [PDF] ( SAIL , 1980)를 참조하십시오 . 그러나 E는 "라인의 시작"에 Control-Form을 사용했는데 이것은 Control키와 키 가있는 "DataDisc"키보드에있었습니다 Form. 당시의 우주 생도 키보드 ( Home키는 없지만 키가 없음 End) 는 일반적으로 Emacs 키보드 인터페이스에 대한 책임 이 있습니다.
EMACS의 바람직한 특징 중 하나는 TECO의 제어-R의 사용했다 "실시간"라인 편집 모드, 당신은 MIT AI 연구소 1978 ITS의 6 페이지의 키 바인딩을 볼 수 있습니다 (TECO는 CRT / 키보드 단자를 선행한다) 에 소개 EMACS 편집기 [스캔 PDF]. 여기서 ┌는 컨트롤을 나타냅니다. 이 모드에서 키 바인딩은 모든 제어 시퀀스, 대부분의 니모닉입니다. Control-E 이 행의 끝 , Control-P 는 이전 행으로 이동 , Control-N 은 다음 행으로 이동 , Control-B 뒤로 한 문자 뒤로 , 최소한 Control - 이 줄의 시작으로 이동 , 코스타스의 "알파벳의 첫 글자"에 대한 제안은 이것만큼 좋습니다.
( EMACS가 TVEDIT 편집기처럼 작동하도록 제어하기 위해 유사한 키 바인딩이 tvlib
매크로 패키지에 있으며 제어 A 및 E를 앞뒤 문장에 바인딩 하지만 시작과 끝의 다른 시퀀스를 사용했습니다.)
"^ R 모드"의 Control-A / Control-E 바인딩은 ITS TECO (1983, 버전 1208, nocrew PDP10 / ITS 사이트 또는 Github_teco_.tgz
에서 아카이브 참조)에서 직접 구현 되었지만 더 정확하게 결정할 수는 없습니다. TECO 소스가 처음 나타 났을 때 특정 바인딩이 선택된 이유를 나타내지 않습니다. 위의 1978 MIT EMACS 문서는 1978 년 EMACS가 TECO 기본 Control-A / Control-E를 사용하지 않았 음을 의미 하며, 매크로 패키지 (스크린 라인)가이를 구현 했을 가능성 이 있습니다.scrlin
요약하자면:
또한보십시오:
Richard Stallman 은 Emacs를 좋아 하기 때문에 .
Ctrl+ a는 Emacs에서 줄의 시작 부분으로 점프하고 libreadline은 Emacs와 동일한 키 바인딩을 사용합니다. Bash는 libreadline을 사용합니다.
set -o vi
또는 을 사용할 수도 있습니다 echo 'set editing-mode vi' >> ~/.inputrc
!