私のzshにはいくつかの補完機能がありますが、私は理解しておらず、変更箇所を見つけることができません。私は2つの問題を抱えています。彼らは私の問題に対して同様の "修正"をしていると思われます。私は、高度な補完機能を取得するためにzshタブの完了動作を制限する
autoload -Uz compinit
compinit
とzshの補完システムを初期化しますが、私はまた私がcompinit
なしではありません、次のような問題を取得します。まず
:は、私は私のホームディレクトリにmydir
と呼ばれるディレクトリを持つことが起こると、残念ながら、mydir
というユーザーも存在します。私は自分のディレクトリに変更してから、タブ補完を使用する場合、すなわち
cd mydir/<TAB>
私は~mydir/
ために利用可能なすべてのディレクトリと一緒に~myusername/mydir/
のコンテンツディレクトリを取得します。私はすでに.zlogin
ファイルに
zstyle ':completion:*' users myusername
を入れてみましたが、それは唯一のユーザ名自体の完成とその後のないディレクトリを変更しません。他のユーザーのホームディレクトリの完成を拒否するようなスイッチがありますか?あるいは、現在のディレクトリの補完が補完メニューの最初に表示されている場合は、既に有効です。
2番目:私のホームディレクトリにあるsetup-file-with-a-long-name.sh
というスクリプトを作成しました。私は
source setup-file-with-a-long-name.sh
を経由して、それを実行したいとき、私は最初の数文字で始まる、私は<TAB>
を押すと、私は、システムがインストールされ、私の$PATH
上のどこかにおそらくある実行可能ファイルの多くのリストを取得するが、私ドンこれらすべてのファイルを気にする必要はなく、私のファイル(現在のディレクトリ内の唯一のファイル)は、メニューの最初に表示され、<TAB> <TAB>
以上でアクセス可能で、最初のファイルの後に受け入れられるようにしてください。<TAB>
(いずれかを選択すると、ソースはファイル名ではなく絶対パスを必要とするため、ソースは動作しません。したがって、これはわかりませんが、これがどのようにデフォルトとして役立つかはわかりません。 )
回避策:
1.書き込み〜/明示 - 私はかなり頻繁に新しいシェルにSSHと私は$HOME
にいるかどうかについて考えずにナビゲーション開始する必要があるため、これは、私は避けたいものですかない。
2. compinit
を使用しないでください。私は基本的にコンテキスト認識の完了が好きです。私はそれを自分のニーズに合わせたいと思っています。
ありがとうございます。しかし、私がこれをすると、 'shopt'コマンドが見つからなかったと言います。 – skaphle
私の答えはbashのために働いています。私はzshの組み込み関数についても調べ始めました。そして、それはちょっとした痛みであると思われます。つまり、zshoptionsとzshbuiltinsです。 setoptは興味のあるコマンドのようで、HASH_LIST_ALLオプションかもしれませんが、私はまだそれを証明していません。 –