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

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

일부 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

너무 길어요.

set -o emacs

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


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

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

ksh또는 등의 많은 셸은 및 환경 변수의 값 zsh에 따라 기본 편집 모드(vi 또는 emacs)를 결정합니다 (우선 순위에 따라 , , 등 의 변형 도 처리함).VISUALEDITORvimelvisxemacs

이것은 (매우 성가신!) 깨졌지만 mksh다른 파생 쉘에서는 여전히 그렇습니다.pdksh

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

~을 위한readline프로그램에서 사용하는 다른 많은 라이브러리와 마찬가지로 bash구성 파일 ~/.inputrc(또는 환경 변수에 지정된 파일 )에는 다음과 같이 설정된 INPUTRCfallback이 있습니다 ./etc/inputrc

set editing-mode vi
set editing-mode emacs

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

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

[1] 교류하지 마세요libeditlinereadline "work-alike"는 Emacs 편집 모드만 제공합니다.

관련 정보