zsh에서 카테고리 자동완성을 비활성화할 수 있나요?

zsh에서 카테고리 자동완성을 비활성화할 수 있나요?

ssh에서 자동 완성을 시도하면 zsh두 가지 유형의 목록이 표시됩니다.

$ ssh a<TAB>
 -- remote host name --
aur
 -- login name --
avahi

그러나 후자는 나에게 적합하지 않았습니다. 아래의 모든 내용을 억제 -- login name --하고 아래 항목만 남겨 둘 수 있습니까 -- remote host name --?

비록 제목은 다르지만 rsync를 사용할 때 여러 항목을 수신합니다.

$ rsync a<TAB>
 -- user --
avahi
 -- host --
aur

여기서 항목을 비활성화하고 싶습니다 -- user --.


아마도 관련 정보

나는 사용한다 zim. 추가적으로 다음 내용이 에 있습니다 ~/.zshrc.

h=()
if [[ -r ~/.ssh/config ]]; then
  h=($h ${${${(@M)${(f)"$(cat ~/.ssh/config)"}:#Host *}#Host }:#*[*?]*})
fi
if [[ $#h -gt 0 ]]; then
  zstyle ':completion:*:ssh:*' hosts $h
  zstyle ':completion:*:slogin:*' hosts $h
  zstyle ':completion:*:rsync:*' hosts $h
fi

이것은 해결 방법입니다허점여기서 zim탭 완성은 호스트가 아닌 호스트 이름에 대해 작동합니다.

답변1

다음 스타일을 사용할 수 있습니다 users.

zstyle ':completion:*' users

이와 같이 빈 목록을 설정하면 사용자 이름 완성이 비활성화됩니다. 원하는 경우 단일 명령으로 범위를 좁힐 수 있습니다.

zstyle ':completion:*:rsync:*' users

예를 들어 비활성화되지만 rsync다른 곳에 보관됩니다.

zsh 완성 시스템은 구성이 매우 정교하고 복잡합니다. zshcompsys새로운 완성은 여기에 표시된 대로 매뉴얼 페이지에 포함되어 있으며 명령은 매뉴얼 페이지 zstyle에 문서화되어 있습니다 .zshmodules

관련 정보