zshでカテゴリオートコンプリートを無効にできますか?

zshでカテゴリオートコンプリートを無効にできますか?

sshでオートコンプリートしようとすると、zsh2種類のリストが表示されます。

$ 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

関連情報