`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구문( bindkey1990년 5.19PL2에서 tcsh에 내장 기능이 추가됨)이고, set -o vi/emacsksh 구문(ksh85에 이미 존재했으며, 아마도 ksh가 적어도 1983년까지 emacs/vi 모드를 가졌기 때문에 더 일찍)입니다.

에서는 zle의 첫 번째 버전과 함께 제공되는 1991 zshbindkey2.0에 추가되었습니다(이전 버전은 1.0 readline에서 차용 bash).

zsh, 첫 번째 1.0 버전에서는 ( /Bourne setopt과 같이 명령줄에 전달된 옵션에 추가로) 옵션을 설정해야 했고 대신 특수 변수를 사용했습니다. 2.0에서는 1996년 2.0에서 새로운 내장 기능을 사용하여 특수 변수를 옵션 세트로 변환하기 위해 옵션 ( 인터프리터와 내장 기능 모두에)이 추가되었습니다 . 이는 거기에 있는 옵션 세트와는 별도의 옵션 세트입니다 . 1990년경에 지원이 추가되었습니다.csh(t)cshbash-osetkshbashshoptset -oset -o

및 "옵션" viemacs그렇지 않았습니다.2003년까지 zsh에 추가됨버전 4.1.1에서는. 옵션을 설정하면 모드 emacs가 비활성화되므로 "옵션" 패러다임은 그다지 적합하지 않습니다 vi.

시작 시 zsh 보고서 zsh -o emacszsh -o vi현재 제대로 작동하지 않는다는 것을 알 수 있을 것입니다 (azsh: invalid module name `zsh/zle'벌레).

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

관련 정보