Zsh 완료: 첫 번째 탭에서 목록 선택으로 이동

Zsh 완료: 첫 번째 탭에서 목록 선택으로 이동

짧은 소개

zsh를 입력할 때 <tab>첫 번째 완성 후보가 강조 표시되기를 원합니다.<tab>목록에 초점을 맞추기 위해 두 번째 클릭을 요구하는 대신 .

다음과 같은 디렉터리 구조가 있다고 가정해 보겠습니다.

Projects/
  |
  +-- FooAwesome/
  |
  +-- FooAwesomeThings/
  |
  +-- FooBar/

들어가서 Projects/를 입력 하면 cd Foo<tab>zsh가 친절하게 옵션 목록을 제공합니다.

Zsh 완료 옵션

그러나 목록 내에서 선택 항목을 얻으려면 <tab>첫 번째 후보가 강조 표시되기 전에 다시 클릭해야 합니다.

목록의 첫 번째 항목이 선택됨

처음으로 클릭할 때 첫 번째 선택 항목을 강조 표시하려면 어떻게 해야 합니까 <tab>?

현재 구성

zstyle ':completion:*' completer _expand _complete _ignored _correct _approximate
zstyle ':completion:*' expand prefix
zstyle ':completion:*' matcher-list '' 'm:{[:lower:]}={[:upper:]}' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'r:|[._-]=* r:|=*'
zstyle ':completion:*' menu select=2
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s

zstyle ':completion:*' file-list all
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}

zstyle ':completion:*' group-name ''

zmodload zsh/complist
bindkey -M menuselect 'h' vi-backward-char
bindkey -M menuselect 'k' vi-up-line-or-history
bindkey -M menuselect 'j' vi-down-line-or-history
bindkey -M menuselect 'l' vi-forward-char
bindkey -M menuselect '^xi' vi-insert

zstyle :compinstall filename '/Users/ashton/.zshrc'
autoload -Uz compinit
compinit

저는 플러그인 관리자 oh-my-zsh나 그와 유사한 것을 사용하지 않습니다. 가능하다면 나는 멋진 사용자 정의 패키지나 그 어떤 것도 없는 순수한 zsh 구성인 "일반" 솔루션을 선호합니다.

답변1

구성에서 제거하면 setopt menu_complete첫 번째 항목으로 이동이 중지됩니다. setopt no_list_ambiguous이것도 병행해야 할 것 같아요 . zshoptions(1)설명하다:

MENU_COMPLETE (-Y)

완료가 확실하지 않은 경우 가능성을 나열하거나 경고음이 울리는 대신 첫 번째 일치 항목을 즉시 삽입하세요. 그런 다음 요청이 다시 완료되면 첫 번째 일치 항목이 제거되고 두 번째 일치 항목이 삽입되는 방식으로 진행됩니다. 더 이상 일치하는 항목이 없으면 첫 번째 일치 항목이 다시 반환됩니다. reverse-menu-complete다른 방향으로 목록을 반복하는 데 사용할 수 있습니다. 이 옵션은 무시됩니다 AUTO_MENU.

관련 정보