현재 zle 키맵/모드는 무엇입니까?

현재 zle 키맵/모드는 무엇입니까?

예를 들어, 올바른 키 조합을 눌러 viins터미널에 들어가고 나갈 때 잊어버린 경우, 내가 언제 돌아왔는지 어떻게 알 수 있나요? 기본 모드가 무엇인지 어떻게 알 수 있나요? 가이드는 이렇게 말합니다.

잘못된 모드에 있는 경우 ~/.zshrc의 "bindkey -e"를 사용하면 emacs 모드로 전환되고 "bindkey -v"를 사용하면 vi 모드로 전환됩니다.

근데 뭐모델? 입력하기 전에 알고 싶습니다. 내가 아는 한 $KEYMAP 특수 변수만 사용할 수 있습니다.이내에man zshzlezle 위젯을 사용 중인데 zshell 사용자 가이드에서 현재 모드를 결정하는 방법에 대한 정보를 찾을 수 없습니다 .

어떤 도움이나 통찰력이라도 대단히 감사하겠습니다.

답변1

요약: a를 수행 bindkey -lL main하면 단어 앞에 키맵 이름이 표시됩니다 main.

내가 읽은 것 중에서문서"현재" 키맵은 name 으로 표시되는 것 같습니다 main. 이는 일반적 으로 viins또는 emacs키맵의 별칭입니다.

더 멀리아래에그것은 다음과 같이 말합니다:

-l                (소문자 "L")

모든 기존 키맵 이름을 나열합니다. 인수가 제공되면 해당 키맵만 나열됩니다.

이 옵션도 사용하는 경우 -L키맵을 생성하거나 연결하기 위한 바인딩 키 명령으로 나열됩니다. ' bindkey -lL main'는 ' '(있는 경우)에 연결된 키맵 main과 표준 emacs 또는 vi 에뮬레이션이 적용되는지 여부를 보여줍니다. 이 옵션은 .safe이 방법으로 생성할 수 없기 때문에 키맵을 표시하지 않습니다 . 그러나 " " bindkey -lL .safe도 오류로 보고되지 않고 아무 것도 출력하지 않습니다.

따라서 a를 수행하면 (일반적인 상황에서) 키맵 중 하나(pass ) 가 "현재" 키맵의 별칭임을 bindkey -lL확인할 수 있습니다 .bindkey -Amain

키맵이 존재하지 않으면 키맵에 들어가게 main되는데 , 이는 매우 불편하지만 문제를 해결할 수 있을 만큼 충분히 기능적입니다. .safe이런 일이 발생하면 bindkey -d키맵을 재설정해야 합니다.

관련 정보