내가 아는 한, set -o emacs
및 는 bindkey -e
에뮬레이트하기 위해 터미널 라인 편집기의 동작을 수정하는 데 사용되며 emacs
, set -o vi
및 는 키 바인딩을 bindkey -v
에뮬레이트하는 데 사용됩니다 vi
. 둘 다 동일한 작업을 수행하는 set -o
것 같으 므로 bindkey
둘 사이의 차이점이 무엇인지, 차이점이 있는지 알고 싶습니다.
set -o
대부분의 쉘에서 작동 bindkey
하는 것 같지만 zle
특정 명령이 하나 있습니다. 이것이 유일한 차이점입니까? 또한 동일한 키를 바인딩합니까, 아니면 다른 작업에 set -o
바인딩된 일부 키가 있습니까 ?bindkey
답변1
bindkey -v/-e
는 tcsh
구문( bindkey
내장 함수는 1990년 5.19PL2에서 tcsh에 추가됨) set -o vi/emacs
이지만 ksh 구문입니다 (ksh가 적어도 1983년 초에 emacs/vi 모드를 갖고 있었기 때문에 아마도 그 이전 ksh85에 있었을 것입니다).
zle의 첫 번째 버전은 1991년 zsh
2.0 에 추가되었습니다 bindkey
(1.0 이전 버전에서 빌려옴 readline
) bash
.
zsh
, 첫 번째 1.0 버전에서는 setopt
옵션을 설정해야 했기 때문에( csh
/Bourne의 명령줄을 통해 전달된 옵션은 제외) while (t)csh
및 bash
특수 변수를 사용해야 했습니다. 2.0에서는 -o
작업할 수 있는 옵션(인터프리터 및 내장 옵션)이 추가되었습니다(이 옵션 자체는 1996년 2.0의 새로운 내장 옵션에 의해 설정된 옵션으로 특수 변수를 변환했습니다. 이는 옵션과 별도의 옵션 세트였습니다). 1990년에 지원이 추가되었습니다.set
ksh
bash
shopt
set -o
set -o
"옵션 vi
"은 emacs
그렇지 않습니다.2003년 이전에 zsh에 추가됨하지만 버전 4.1.1에서는. 옵션을 설정하면 모드 emacs
가 비활성화되기 때문에 "옵션" 패러다임은 이 상황에 적합하지 않습니다 vi
.
zsh -o emacs
현재 zsh -o vi
zsh 시작에 대한 보고가 제대로 작동하지 않는다는 것을 알 수 있습니다 zsh: invalid module name `zsh/zle'
(a허점).
대부분의 쉘은 또한 zsh
줄 편집 모드를 사용자의 편집기 기본 설정에 일치시키려고 환경 변수의 값을 기반으로 기본 편집 모드를 선택합니다.$EDITOR
$VISUAL