명령줄에서 커서 이동을 제어하는 ​​설정은 무엇입니까?

명령줄에서 커서 이동을 제어하는 ​​설정은 무엇입니까?

일부 Unix 시스템에서는 Ctrl-A 또는 Ctrl-E를 입력하여 줄의 시작이나 끝으로 이동할 수 있습니다. 일부 Unix 시스템에서는 그럴 수 없으며 ^A 또는 ^E 등만 인쇄합니다. 이 키스토크가 예상대로 작동하는지(명령줄에서 이동) 또는 ^A, ^E 등 문자를 인쇄하는지 여부를 제어하는 ​​것은 무엇입니까?

답변1

이는 모두 특정 쉘 구현에 따라 다릅니다(다른 시스템에서 또는 심지어 단일 시스템 내의 다른 사용자에 대해 다른 기본 쉘을 가질 수도 있습니다(예: bash, ksh, tcsh 등)).

또한 쉘 자체에 따라 다릅니다.

예를 들어 bash는 emacs와 vi의 두 가지 모드를 지원합니다. 각 모드에는 자체 단축키(emacs 또는 vi와 같은)가 있습니다. 이를 변경하려면 실행해야 합니다 set -o emacs(일반적으로 기본값임).set -o vi

특정 쉘 문서에서 자세한 정보를 찾을 수 있습니다.

답변2

tl;dr

set -o emacs

사용하게 될 대부분의 쉘에서 Ctrl-A, Ctrl-E, Ctrl-B 등의 emacs 키 바인딩을 활성화합니다.


쉘에는 행 편집 기능이 없거나 vi편집 모드에 있을 수 있습니다(기준).

편집 모드 가 아닌 경우 emacsCtrl-A 및 Ctrl-E는 특별한 의미가 없습니다. echo및 stty/termios 설정이 켜져 있으면 특별히 처리되지 않는 모든 제어 키는 , 등의 "캐럿" 표기법 echoctl으로 표시됩니다 .^A^X

ksh또는 등 의 많은 셸은 환경 변수 zshVISUALEDITOR환경 변수(우선 순위에 따라 , , 등의 변형도 처리 vim) elvis를 기반으로 기본 편집 모드(vi 또는 emacs)를 결정합니다 xemacs.

이것은 에서 깨졌는데 (매우 짜증나게!) 다른 파생 쉘 mksh에서도 여전히 그렇습니다 .pdksh

다른 쉘은 편집 모드와 같 bash거나 tcsh기본적으로 편집 모드를 사용 emacs하지만 라인 편집 라이브러리의 구성 파일에서 재정의될 수도 있습니다.

에 대한readline라이브러리 bash및 기타 여러 프로그램에서 사용하는 구성 파일 ~/.inputrc(또는 환경 변수에 지정된 파일 INPUTRC)은 다음과 같으며 /etc/inputrc설정은 다음과 같습니다.

set editing-mode vi
set editing-mode emacs

editline많은 BSD 프로그램에서 사용되는 / [1] 라이브러리 의 경우 libedit구성 파일은 일반적으로 다음과 같습니다.~/.editrc설정은 다음과 같습니다.

bind -v  # for vi
bind -e  # for emacs

[1] 헷갈리지 마세요.libeditlineEmacs 편집 모드만 제공하는 readline "work-alike"입니다.

관련 정보