왜 단축키 Ctrl + A가 터미널의 줄 시작으로 점프합니까?


11

줄 끝으로 점프하는 것이 Ctrl+ 인 것처럼 끝으로 생각할 수있는 EE은 왜 시작으로 점프 A합니까?


1
"Anfang"에 대한 "A"
Anthon

또는 "A"는 알 파파 에서 글자
Costas

제발 참고 그 점에서 emacs(그리고에서 bash뿐만 아니라) 당신은 또한 함께 라인의 시작 / 끝으로 이동할 수 있습니다 Home/ End기본적으로 키.
jimmij

답변:


20

이 문제에는 기술적 측면과 역사적 측면이 있습니다.

기술적 답변은 GNU Readline을bash 사용 하기 때문 입니다. 에서 제어가-A 기능에 바인딩 ,이를 함께 표시 할 수 있습니다 :readlinebeginning-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-lineend-of-line. 두 bashreadline에서 개발 쳇 레이미 , 이맥스 사용자도 개발자 ce이맥스 클론.


(이것은 수십 년 전부터 수년간의 역사를 요약하려고 노력하며 일부 세부 사항에 대한 광택을 나타냅니다.)

이제 왜 Control-a입니까? Readline 은 기본적으로 Emacs와 같은 바인딩을 사용 합니다. GNU Emacs의 Control-a는 move-beginning-of-line현재 "홈"기능으로 간주 되는를 호출합니다 .

Stallman and Steel의 원래 EMACS 는 Fred Wright의 E 편집자 (WYSIWYG 초기 편집자)와 TECO (암호화 된 모달 편집자 / 언어) 에서 영감을 얻었습니다. EMACSTECO 의 매크로 집합입니다 . 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

요약하자면:

  • bash는 readline을 사용합니다
  • readline 키 바인딩은 Emacs / EMACS를 따릅니다.
  • 원래 EMACS는 TECO로 만들어졌으며 많은 기능을 상속받습니다.
  • TECO의 대화식 모드 매크로는 (주로) 니모닉 제어 키 바인딩을 사용했으며 "줄의 시작"이 Control-A에 할당되었습니다.

또한보십시오:


6

Richard StallmanEmacs를 좋아 하기 때문에 .

Ctrl+ a는 Emacs에서 줄의 시작 부분으로 점프하고 libreadline은 Emacs와 동일한 키 바인딩을 사용합니다. Bash는 libreadline을 사용합니다.


2
Vim 키 바인딩을 얻기 위해 set -o vi또는 을 사용할 수도 있습니다 echo 'set editing-mode vi' >> ~/.inputrc!
wchargin

사람들이 왜이 답을합니까? 문제는 ctrl + a가 명령이 아닌 행의 시작 부분으로 이동하는 명령으로 선택된 이유 였습니다.
wurtel

@Wurtel 답은 첫 번째 문장에 있습니다. "Gnu의 역사"를 참조하십시오.
Jasen

4
죄송하지만 Richard Stallman은 Emacs를 좋아하기 때문에 왜 ctrl-a가 나를 라인의 시작으로 데려다 주는지 알려주지 않습니다. 왜 ctrl-s, ctrl-x 등이 아닌가?
wurtel

0

문자 "a"는 Control + b와 Control + s가 이미 사용 되었기 때문에 선택되었으므로 A는 라틴 알파벳의 첫 번째 문자이므로 사용 된 문자 일 것입니다. 내가 어떻게 알아? TECO (EMACS의 전신)와 EMACS 개발자 중 한 명이 오늘 답변을 얻었 기 때문입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.