단축키 Ctrl + A가 터미널의 줄 시작 부분으로 이동하는 이유는 무엇입니까?

단축키 Ctrl + A가 터미널의 줄 시작 부분으로 이동하는 이유는 무엇입니까?

줄의 끝으로 점프하는 것이 끝이라고 간주될 수 있는 Ctrl+ 와 마찬가지로 왜 처음으로 점프를 사용합니까 ?EEA

답변1

이 질문에는 기술적 측면과 역사적 측면이라는 두 가지 측면이 있습니다.

기술적인 답변은 다음을 bash사용 하기 때문입니다.GNU 읽기 라인. readlineControl-a 함수 바인딩 에서 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내가 사용한 다양한 터미널에 대해 (경유로) 추가한 것입니다. bash-2.0부터 터미널 termcap 기능이 포함된 경우 및 khkH및 으로 설정 Home됩니다 . 그리고 둘 다로 구성되어 있습니다Endbeginning-of-lineend-of-linebashreadline쳇 레이미, Emacs 사용자이자 ceEmacs 클론 개발자입니다.


(이 기사는 수십 년 전의 역사를 요약하고 일부 세부 사항을 얼버무리기 위한 것입니다.)

자, 왜 Control-a를 특별히 사용합니까? 독서선기본적으로 Emacs와 유사한 바인딩을 사용합니다.. Control-GNU Emacs의 호출 move-beginning-of-line. 이제 우리는 이를 "홈" 기능으로 생각합니다.

스톨만 앤 스틸 오리지널 EMACS프레드 라이트에게서 영감을 받음두번째편집하다(초기 WYSIWYG 편집자) 및테코(신비한 모달 편집기/언어) - EMACS는홍지테코를 위해. 바라보다필수E[PDF] (에서, 1980). 그러나 E는 Control-Form을 사용하여 "줄의 시작"을 의미하며, 이는 Control키와 키 가 있는 "DataDisc" 키보드에 있습니다 Form. 이것우주 생도 키보드시간( Home그런데 키가 하나 있지만 누락되었습니다 End)널리 비난Emacs 키보드 인터페이스와 함께 사용됩니다.

EMACS의 바람직한 기능 중 하나는 TECO의 Control-R "라이브" 라인 편집 모드를 사용한다는 것입니다(TECO는 CRT/키보드 터미널보다 앞서 있음). MIT AI Lab 1978 ITS의 6페이지에서 키 바인딩을 볼 수 있습니다.EMACS 편집기 소개[스캔 PDF], 여기서 ┌는 제어를 나타내는 데 사용됩니다. 이 모드에서 키 바인딩은 주로 니모닉인 제어 시퀀스입니다: Control-E이번 여행을 마치며, 컨트롤-P이전 줄로 이동, 컨트롤-N다음 줄로 이동, 컨트롤-B한 문자 뒤로, 특히 Control-A줄의 시작 부분으로 이동이에 대한 코스타스의 제안인 "알파벳의 첫 글자"가 가장 좋습니다.

(비슷한 키 바인딩은 다음 위치에 있습니다.tvlib매크로 패키지목적은 EMACS가 TVEDIT 편집기처럼 작동하도록 하고 컨트롤 A와 E를 뒤로 및 앞으로로 바인딩하는 것입니다.문장, 그러나 줄의 시작과 끝 부분에 다른 시퀀스를 사용합니다. )

"^R 모드"의 Control-A/Control-E 바인딩은 ITS TECO(1983, 버전 1208, _teco_.tgz참조) 에서 직접 구현됩니다.노크루 PDP10/ITS웹사이트 또는지텁), 처음 등장했을 때 더 정확하게 알 수는 없지만 TECO 소스는 특정 바인딩이 선택된 이유를 말하지 않습니다. 위의 1978 MIT EMACS 파일은 1978 EMACS가 TECO의 기본 Control-A/Control-E를 사용하지 않았음을 의미합니다.가능한생각하다scrlin매크로 패키지(Screen Line)이 이를 달성합니다.

요약하자면:

  • readline을 사용하여 bash
  • readline 키 바인딩은 Emacs/EMACS를 따릅니다.
  • 원본 EMACS는 TECO와 공동 제작되었으며 많은 기능을 계승했습니다.
  • TECO의 대화형 모드 매크로는 (주로) 니모닉을 사용하여 키 바인딩을 제어하며 "줄 시작"은 궁극적으로 Control-A에 할당됩니다.

또한보십시오:

답변2

왜냐하면리처드 스톨먼좋다이맥스.

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

답변3

문자 "a"를 선택한 이유는 Ctrl+b와 Ctrl+s가 이미 사용 중이었기 때문입니다. 그래서 A가 라틴 알파벳의 첫 글자이기 때문에 이를 사용하기로 결정했습니다. 내가 어떻게 알아? 오늘 TECO(EMACS의 전신)와 EMACS 개발자 중 한 명으로부터 답변을 받았기 때문입니다.

관련 정보