짧은 소개
zsh를 입력할 때 <tab>
첫 번째 완성 후보가 강조 표시되기를 원합니다.곧<tab>
목록에 초점을 맞추기 위해 두 번째 클릭을 요구하는 대신 .
예
다음과 같은 디렉터리 구조가 있다고 가정해 보겠습니다.
Projects/
|
+-- FooAwesome/
|
+-- FooAwesomeThings/
|
+-- FooBar/
들어가서 Projects/
를 입력 하면 cd Foo<tab>
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
.