如何修改Zsh中ssh补全的users和hosts标签描述?
修改Zsh SSH补全分组标签描述
当前问题
我用以下Zsh配置实现SSH补全项分组:
zstyle ':completion:*:*:*:*:descriptions' format '%F{green}-- %d --%f' zstyle ':completion:*' group-name '' zstyle ':completion:*:ssh:*:users' users alice bob eve zstyle ':completion:*:ssh:*:hosts' hosts lenovo hp asus
执行ssh按
$ ssh <TAB> -- remote host name -- asus hp lenovo -- login name -- alice bob eve
我想把标签remote host name改成hosts,login name改成users,但尝试以下命令没有效果:
zstyle ':completion:*:ssh:*:hosts' group-name 'hosts' zstyle ':completion:*:ssh:*:hosts' description 'hosts'
解决方案
需要针对SSH补全的users和hosts上下文分别设置description样式,同时保留原有的基础分组配置。完整配置如下:
# 基础补全描述格式与分组设置 zstyle ':completion:*:*:*:*:descriptions' format '%F{green}-- %d --%f' zstyle ':completion:*' group-name '' # 自定义SSH补全的用户和主机列表 zstyle ':completion:*:ssh:*:users' users alice bob eve zstyle ':completion:*:ssh:*:hosts' hosts lenovo hp asus # 覆盖默认标签描述 zstyle ':completion:*:ssh:*:hosts' description 'hosts' zstyle ':completion:*:ssh:*:users' description 'users'
修改后重新加载Zsh配置(执行source ~/.zshrc),再次按ssh时,显示就会变成:
$ ssh <TAB> -- hosts -- asus hp lenovo -- users -- alice bob eve
说明
之前的尝试无效是因为只针对hosts设置了description,且没有对users做同样配置;另外group-name设置为空的作用是让分组直接使用description的文本作为标签,所以只需针对对应补全上下文修改description即可覆盖Zsh内置的默认描述。
内容的提问来源于stack exchange,提问作者nyg
相关产品推荐
相关产品推荐

