ssh
でオートコンプリートしようとすると、zsh
2種類のリストが表示されます。
$ 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