oh-my-zsh에서 Ctrl-Left / Right 바인딩 문제


6

웬일인지 내 MacBook Pro에 oh-my-zsh을 설치 한 후 Ctrl-Left Arrow와 Ctrl-Right Arrow를 바인드하여 ZSH에서 단어 사이를 이동할 수 없습니다.

iTerm2에서 "escape sequence 보내기"[1; 5D 및 [1; 5C, 오 - 내 -zsh 설치 전에 작동하도록 키 바인딩을 구성했습니다.

나는 또한 주석을 없애려고 노력했다.

bindkey '^[^[[C' emacs-forward-word
bindkey '^[^[[D' emacs-backward-word

~ / .oh-my-zsh / lib / key-bindings.zsh에서 사용 가능합니다. 두 시나리오에서 Ctrl-Left / Right를 누르면 화면에 "5D"와 "5C"가 전송됩니다.

TLDR : oh-my-zsh를 사용할 때 Ctrl-Left와 Ctrl-Right를 사용하여 단어 사이를 이동 한 사람이 있습니까?

답변:


6

바인드 키 행을 다음으로 변경하십시오.

bindkey '^[[1;5C' emacs-forward-word
bindkey '^[[1;5D' emacs-backward-word

4

이 하나는 나를 위해 일했다 :

bindkey "[C" emacs-forward-word   #control left
bindkey "[D" backward-word        #control right

사실, 나는 Control+ leftControl+ right사이를 눌러 마술을했습니다.


4

를 누르 ^v(Ctrl-v)거나 catzsh shell의해, 다음 key-combinations(Ctrl+left)중 당신 싶어 사용은 해당 bindkey 값을 얻을 수 있습니다. 이 출력을 명령에 사용하십시오. 터미널 드라이버 등에 따라 시스템마다 다릅니다.

내 경우 Ctrl-left에는 ^[O5D. 금후,bindkey '^[O5D' backward-word

앞으로 나아가고 싶다면 https://stackoverflow.com/a/8645267/2538943 은 cmd의 도움으로 zsh 키 바인딩을 일반화하는 아이디어를 제공합니다 autoload zkbd ; zkbd. 끝나면 source ~/.zkbd/$TERM-${${DISPLAY:t}:-$VENDOR-$OSTYPE}.zshrc에 다음 행을 추가하십시오 . 이제부터는 그것을 쓸 수 있습니다 [[ -n ${key[Left]} ]] && bindkey "${key[Left]}" backward-char. 이 방법으로 동일한 .zshrc를 다른 컴퓨터에도 복사 할 수 있습니다.

추가 정보 : Peter Stephenson의 말이다. ...the function keys on your keyboard... It depends a good deal on how your windowing system or terminal driver handles them... 따라서 그러한 스크립트를 실행하기 전에 모든 키 바인드의 유효성을 검사하는 것이 좋습니다. 대부분의 경우 달라지지 않을 수도 있습니다.

zsh의 주요 바인딩에 대한 자세한 내용은이 안내서를 확인하십시오. http://zsh.sourceforge.net/Guide/zshguide04.html .

눌려진 키가 어떻게 표시되는지 알고 싶으면 https://unix.stackexchange.com/questions/116629/how-do-keyboard-input-and-text-output-work/116630#116630


0

그래서 당신은 당신의 터미널 에뮬레이터 하나 CSI 시퀀스를 전송 (ESC +이 [+ 1;5C키에 대한)를,하지만 당신은 귀하의 쉘 말 했어요 bindkey터미널 A에 대한 입력보고 명령을 다른 CSI 순서 (ESC + ESC + [+을 C), 당신은 이유를 궁금해 이 작동하지 않습니다?

아주 명백한 이유 때문에 작동하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.