`set -o emacs`와 `bindkey -e`의 차이점은 무엇입니까?

`set -o emacs`와 `bindkey -e`의 차이점은 무엇입니까?

내가 아는 한, 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/-etcsh구문( bindkey내장 함수는 1990년 5.19PL2에서 tcsh에 추가됨) set -o vi/emacs이지만 ksh 구문입니다 (ksh가 적어도 1983년 초에 emacs/vi 모드를 갖고 있었기 때문에 아마도 그 이전 ksh85에 있었을 것입니다).

zle의 첫 번째 버전은 1991년 zsh2.0 에 추가되었습니다 bindkey(1.0 이전 버전에서 빌려옴 readline) bash.

zsh, 첫 번째 1.0 버전에서는 setopt옵션을 설정해야 했기 때문에( csh/Bourne의 명령줄을 통해 전달된 옵션은 제외) while (t)cshbash특수 변수를 사용해야 했습니다. 2.0에서는 -o작업할 수 있는 옵션(인터프리터 및 내장 옵션)이 추가되었습니다(이 옵션 자체는 1996년 2.0의 새로운 내장 옵션에 의해 설정된 옵션으로 특수 변수를 변환했습니다. 이는 옵션과 별도의 옵션 세트였습니다). 1990년에 지원이 추가되었습니다.setkshbashshoptset -oset -o

"옵션 vi"은 emacs그렇지 않습니다.2003년 이전에 zsh에 추가됨하지만 버전 4.1.1에서는. 옵션을 설정하면 모드 emacs가 비활성화되기 때문에 "옵션" 패러다임은 이 상황에 적합하지 않습니다 vi.

zsh -o emacs현재 zsh -o vizsh 시작에 대한 보고가 제대로 작동하지 않는다는 것을 알 수 있습니다 zsh: invalid module name `zsh/zle'(a허점).

대부분의 쉘은 또한 zsh줄 편집 모드를 사용자의 편집기 기본 설정에 일치시키려고 환경 변수의 값을 기반으로 기본 편집 모드를 선택합니다.$EDITOR$VISUAL

관련 정보