그것이 무엇인지, 무엇을 유발하는지 모르는 경우 키 바인딩을 비활성화하려면 어떻게 해야 합니까?
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
이 질문에는 두 부분이 있습니다.
- 매핑의 기능을 어떻게 알 수 있나요?
- 매핑을 바인딩 해제하는 방법은 무엇입니까?
매핑의 기능을 어떻게 알 수 있나요?
다른 답변에서 언급했듯이
bindkey <key_combination>
그러면 키 조합과 관련된 zle 명령이 인쇄됩니다.
매핑을 바인딩 해제하는 방법은 무엇입니까?
bindkey -r <key_combination>
답변3
아마
% bindkey '^[/'
"^[/" _history-complete-older
%
또는 유사합니다. 그것이 당신이 알아내는 방법입니다.
추가 읽기
- 폴 폴스타드(2015-12-02). "ZLE 내장 구성 요소".Z 하우징 매뉴얼. 5.2.
답변4
KEYTIMEOUT
또한 ZSH가 다중 키 시퀀스를 감지하기 위해 기다리는 시간을 지시하는 설정 도 관련이 있으며 다음 설정을 통해 최소화됩니다.
KEYTIMEOUT=1
극도로 극단적인 느낌이 든다면 ESC와 같은 모든 바인딩을 제거하여 ZSH에 Esc 키를 누르는 데 시간을 낭비하는 다중 키 시퀀스가 없도록 할 수도 있습니다.
bindkey -rpM viins '^['
bindkey -rpM vicmd '^['