일부 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
편집 모드에 있을 수 있습니다(다음에 지정됨).기준).
편집 모드가 아닌 경우 emacs
Ctrl-A 및 Ctrl-E는 특별한 의미가 없습니다. stty/termios 설정이 켜져 있으면 특별히 처리되지 않은 모든 제어 키 echo
에는 등의 "캐럿" 기호가 echoctl
표시됩니다 .^A
^X
ksh
또는 등의 많은 셸은 및 환경 변수의 값 zsh
에 따라 기본 편집 모드(vi 또는 emacs)를 결정합니다 (우선 순위에 따라 , , 등 의 변형 도 처리함).VISUAL
EDITOR
vim
elvis
xemacs
이것은 (매우 성가신!) 깨졌지만 mksh
다른 파생 쉘에서는 여전히 그렇습니다.pdksh
다른 쉘은 편집 모드를 선호 bash
하거나 tcsh
기본값으로 설정 emacs
하지만 이는 라인 편집 라이브러리의 구성 파일에서 재정의될 수도 있습니다.
~을 위한readline
프로그램에서 사용하는 다른 많은 라이브러리와 마찬가지로 bash
구성 파일 ~/.inputrc
(또는 환경 변수에 지정된 파일 )에는 다음과 같이 설정된 INPUTRC
fallback이 있습니다 ./etc/inputrc
set editing-mode vi
set editing-mode emacs
많은 BSD 프로그램에서 사용되는 editline
/ [1] 라이브러리의 경우 libedit
구성 파일은 일반적으로 다음과 같습니다.~/.editrc
로 설정:
bind -v # for vi
bind -e # for emacs
[1] 교류하지 마세요libeditline
readline "work-alike"는 Emacs 편집 모드만 제공합니다.