当我尝试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
手册页中。