vi와 같은 hjkl 키를 사용하여 zsh의 탭 완성 메뉴를 탐색 할 수 있습니까?


13

zsh의 메뉴 기반 탭 완성을 사용합니다. Tab한 번 누르면 가능한 완료 목록이 나타납니다. Tab다시 누르면 화살표 키로이 목록을 탐색 할 수 있습니다. 그러나, 그들을 탐색 할 수 vi-like H, J, K, L대신 키?

bindkey -ein 과 함께 명령 줄 입력에 emacs 모드를 사용합니다 ~/.zshrc. 또한 zim 과 zsh를 함께 사용 합니다. 관련이있는 경우 탭 완성 시스템을 지정하는 명령은 다음같습니다 .

답변:


16

예, 다음을 활성화하면됩니다 menu select.

zstyle ':completion:*' menu select
zmodload zsh/complist
...
# use the vi navigation keys in menu completion
bindkey -M menuselect 'h' vi-backward-char
bindkey -M menuselect 'k' vi-up-line-or-history
bindkey -M menuselect 'l' vi-forward-char
bindkey -M menuselect 'j' vi-down-line-or-history

+1 내가 수동으로 실행하는 경우이 잘 작동 bindkey터미널에서 명령을,하지만 난의 끝에 넣어 경우 실패 ~/.zshrc와 함께 /home/sparhawk/.zshrc:bindkey:186: no such keymap `menuselect'.
Sparhawk

완료 스크립트를 활성화 했습니까? 타원 앞에 명령을 참조하십시오 ...
jasonwryan

당신은 zstyle선 을 의미 합니까? 그렇습니다 ~/.zshrc.
Sparhawk


추가 autoload -Uz compinit하고 compinit작동하지 않았지만 (a) 메뉴 선택이 일반적인 의미로 잘 작동하고 항상 있고 (b) bindkey나중에 수동으로 줄을 실행할 수 있기 때문에 문제를 해결할 수 있는지 확실하지 않습니다. 공장. 또한 방금 (b) 탭을 먼저 눌러 완료 시스템을 초기화 한 다음 실행 하면 작동한다는 것을 깨달았습니다 bindkey…. 그렇지 않으면 위와 같이 실패합니다 ( bindkey: no such keymap `menuselect').
Sparhawk

4

나는이 오셨습니다 가장 가까운 사용 CTRL- NCTRL- P가능한 완성 목록을 앞뒤로 이동, 대신 TabShift- Tab. 이것은 이다vi-like 탐색.

구성 .zsh파일에서 다음을 사용하여이를 달성합니다.

bindkey '^n' expand-or-complete
bindkey '^p' reverse-menu-complete

그리고 관련 적으로 :

bindkey '^k' up-history
bindkey '^j' down-history
bindkey '^h' backward-delete-char
bindkey '^w' backward-kill-word
bindkey '^r' history-incremental-search-backward

바인딩에 대한 문서는 다음과 같습니다 .


2
감사합니다. 또한 명령을 -M menuselect추가하여 bindkey여기에서 모드를 제한 할 수 있습니다 .
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.