修正する:

修正する:

では、zshsshとscpはのホストを使用して実行されます/etc/hosts。ただし、大文字を使用して明らかに非ホストファイルを参照している場合でも、ホスト名を一致させようとします。

$ scp -rp F<tab>
FOO.txt foo.mydomain.com

この機能を無効にしたいです。私は次の行を変更しました/usr/share/zsh/functions/Completion/Unix/_ssh

compadd -M 'm:{a-zA-Z}={A-Za-z} r:|.=* r:|=*' "$@" $config_hosts

到着

compadd  "$@" $config_hosts

sshコマンドの入力を開始し、タブを使用してホスト名をオートコンプリートするとssh foo<tab>エラーが発生します。

_all_labels:39: command not found: -J

これは何を意味し、どのように解決できますか?

2番目の問題は、Unix / _sshを変更した後に完了ファイルを再コンパイルできないことです。

zcompile Unix/ Unix.zwc
zcompile: can't open file: Unix.zwc

Ctrl+ +を押すと、次のようXな結果が出ます?

$ scp -rp TE
Trace output left in /tmp/zsh10048scp3 (up-history to view)
TESTING.txt
testing          testing.mydomain.com

ここで、TESTING.txtはファイルで、ホスト名testingです。testing.mydomain.com

修正する:

_all_labels:39ホストでのみ上記のエラーが発生していることがわかりましたProxyCommand~/.ssh/configこれには以下が含まれます。

Host testing        testing.mydomain.com
    Hostname        testing.mydomain.com
    User            root    
    PubkeyAuthentication    yes
    StrictHostKeyChecking   yes
    UserKnownHostsFile  ~/.ssh/known_hosts
    ProxyCommand        ssh server2.mydomain.com nc %h %p

ベストアンサー1

前の行の「\」を削除していないことを確認してください。/usr/share/zsh/functions/完成/Unix/_ssh、同時に変更します。

_wanted hosts expl 'remote host name' \
 compadd -M 'm:{a-zA-Z}={A-Za-z} r:|.=* r:|=*' "$@" $config_hosts

こうしました(連続文字「\」を削除しました)求める行)次のようなエラーが発生します。

_all_labels:39: command not found: -J

別の可能性は、誤って「\」の後に余分なスペースを追加して無効にした可能性があることです。

あなたの質問の2番目の部分に関して使用する正しい構文は次のとおりです。

zcompile Unix.zwc Unix/*

(UnixのすべてをUnix.zwcにコンパイルします)

おすすめ記事