zsh 키 바인딩의 기능을 모르는 경우 어떻게 제거합니까?

zsh 키 바인딩의 기능을 모르는 경우 어떻게 제거합니까?

그것이 무엇인지, 무엇을 유발하는지 모르는 경우 키 바인딩을 비활성화하려면 어떻게 해야 합니까?

zsh를 통해 키 모드를 vi 모드로 설정 했습니다 bindkey -v.

기록 검색을 수행하려면 키를 눌러 Esc"명령 모드"로 들어가서 /검색을 시작합니다. 그러나 너무 빨리 누르면 다른 작업이 수행되지만나는 아무것도 모른다!키 바인딩인 것 같은데 Esc-/그게 뭔지 모르겠어요. 어떻게 찾아서 끄나요?

답변1

몇번의 검색 끝에 다음과 같은 답을 찾았습니다.

escape sequence키 조합이 무엇을 실행하는지 확인하려면 다음을 따르세요.이 훌륭한 답변:

echo "CtrlVEsc/"

나에게는 다음과 같이 나타납니다: echo "^[/". CtrlV다음 키가 해석되지 않고 이스케이프 시퀀스로 표시되도록 합니다. 이제 우리는 관련 콘텐츠를 찾으려고 노력하고 있다는 것을 알고 있습니다 "^[/".


모든 zsh 키 바인딩을 나열하려면 bindkey인수 없이 실행하면 됩니다.

$ bindkey
"^A"-"^C" self-insert
"^D" list-choices
"^E"-"^F" self-insert
"^G" list-expand
"^H" backward-delete-char
...
"^Y"-"^Z" self-insert
"^[" vi-cmd-mode
"^[," _history-complete-newer
"^[/" _history-complete-older   ### <--- Here it is.
"^[M" vi-up-line-or-history
"^[OA" vi-up-line-or-history
...
"^\\\\"-"~" self-insert
"^?" backward-delete-char
"\M-^@"-"\M-^?" self-insert

그래서 상관없다고 판단하고 _history-complete-older삭제했습니다. 나는 이것을 내 것에 추가했습니다 .zshrc:

# Unbind the escape-/ binding because it gets triggered when I try to do a history search with "/".
bindkey -r "^[/"

대신, 다른 키에 다시 바인딩하려면 다음을 사용할 수 있습니다.

bindkey -r "^[/"
bindkey "<some-other-key-combo>" _history-complete-older

답변2

이 질문에는 두 부분이 있습니다.

  1. 매핑의 기능을 어떻게 알 수 있나요?
  2. 매핑을 바인딩 해제하는 방법은 무엇입니까?

매핑의 기능을 어떻게 알 수 있나요?

다른 답변에서 언급했듯이

bindkey <key_combination>

그러면 키 조합과 관련된 zle 명령이 인쇄됩니다.

매핑을 바인딩 해제하는 방법은 무엇입니까?

bindkey -r <key_combination>

인용하다 -http://zsh.sourceforge.net/Guide/zshguide04.html#l95

답변3

아마

% bindkey '^[/'
"^[/" _history-complete-older
%

또는 유사합니다. 그것이 당신이 알아내는 방법입니다.

추가 읽기

답변4

KEYTIMEOUT또한 ZSH가 다중 키 시퀀스를 감지하기 위해 기다리는 시간을 지시하는 설정 도 관련이 있으며 다음 설정을 통해 최소화됩니다.

KEYTIMEOUT=1

극도로 극단적인 느낌이 든다면 ESC와 같은 모든 바인딩을 제거하여 ZSH에 Esc 키를 누르는 데 시간을 낭비하는 다중 키 시퀀스가 ​​없도록 할 수도 있습니다.

bindkey -rpM viins '^['
bindkey -rpM vicmd '^['

관련 정보