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