アップデート3私はこの厄介なオートコンプリートオプションが実際にはユーザー名。つまり、/etc/passwd
_kadmin_admin や _kadmin_changepw などのユーザーと、アンダースコアで始まる他の多くのユーザーがいます。これはOSXに固有のものです。
Oh-my-zshは、他の一致が見つからないときに自動的にこれらのユーザー名を完成させます。 「退屈なユーザーを完了しないでください」リストにこれらのユーザー名を追加しようとしましたが、うまくいきませ~/.oh-my-zsh/lib/completion.zsh
んでした。なぜか分からないの?
oh-my-zshがユーザー名を自動的に完成させないようにする方法はありますか?
ZSHやoh-my-zshの奇妙な動作でイライラしています。この問題の原因が何であるかよくわかりません。
オートコンプリート機能が私が予期しなかった奇妙なディレクトリを検索しているようです。それらはいくつかのSVNディレクトリのようです。私はそれらについて何も知らず、なぜ道にいるのかわかりません。 (私はSVNを使用しません)
この動作は、現在のディレクトリに他の一致がない場合にのみ発生するようです。それから私が知らない別の道を見つけなければなりません。
例:
注:私のホームディレクトリに一致するものはありません。mi
→ ~ cd mi<tab>
→ ~ cd _kadmin
つまり、なぜそのディレクトリmi
と_kadmin
一致するのかわかりません。
実際にそのディレクトリに変更しようとすると、とにかくエラーが発生します(完全なディレクトリ名ではないため)。
→ ~ cd _kadmin
cd:cd:10: no such file or directory: _kadmin
押し続けると、<tab>
完全なディレクトリ名と一致します。
→ ~ cd mi<tab><tab><tab>
→ ~ cd kadmin_admin
→ ~_svn
→ ~_svn pwd
/var/empty
そこで何が起こったのかわかりません。 kadmin_adminが何であるかわかりません。これで、ディレクトリ名を変更するときにディレクトリ名を取得し、次のように~_svn
表示PWD
するのはなぜですか?/var/empty
これが私の道です:
/Users/asgeo1/.rvm/gems/ruby-1.9.3-p194/bin:/Users/asgeo1/.rvm/gems/ruby-1.9.3-p194@global/bin:/Users/asgeo1/.rvm/rubies/ruby-1.9.3-p194/bin:/Users/asgeo1/.rvm/bin:/usr/local/php54/bin:/Users/asgeo1/Projects/dotfiles/bin:/Applications/Postgres.app/Contents/MacOS/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin
私はそこから明らかなものを見ることができません。
誰かがこれについて少し明らかにしてください。本当に残念です!
編集する:誰かが以前同様の問題を経験したようです。 停止タブ完了プロンプト「messagebus」 しかし、そこには答えがありません:(
修正する:これはoh-my-zshアプリケーションのcd機能です:
→ ~ which cd
cd () {
if [[ "x$*" = "x..." ]]
then
cd ../..
elif [[ "x$*" = "x...." ]]
then
cd ../../..
elif [[ "x$*" = "x....." ]]
then
cd ../../..
elif [[ "x$*" = "x......" ]]
then
cd ../../../..
else
builtin cd "$@"
fi
}
答え1
_kadmin
kadmin
おそらく、ディレクトリではなくツールの完全な機能でしょう。zsh
見つからないコマンド、ディレクトリ、または有効で既知のコマンド引数の完成を完了しようとすると、可能な拡張候補として完成機能が提供され始めます。基本的に、zsh
いくつかの完成プログラムが付属しており、その多くは必要ないかもしれません。 AIX、BSD、Cygwin、さまざまなLinuxディストリビューションなどのバンドルがあり、すべてを読んでシェルにインストールします。zsh
見つからないものを拡張しようとすると、インストールされているすべての完成機能を提供できます。
zsh
次のファイルに入れて、より完全な機能を提供しないように設定できます~/.zshrc
。
zstyle ':completion:*:functions' ignored-patterns '_*'
ファイルを再読み込みすると、まだインストールされていないツールの補完機能は提供されなくなります。zshcompsys
(多く)詳細はマンページをご覧ください。
編集する アップデート3に返信する
_kadmin
実際のユーザーアカウントの場合は、zsh
完成時に提供しないように設定できます。アプローチは、シェルが考慮したいユーザーアカウントをリストするように見えます。これは、リストされたユーザーにのみ付与される名前を制限します。そのzstyle
行は次のとおりです。
zstyle ':completion:*' users asgeo1 root
タグの後には、ユーザーの数をいくらでも一覧表示できると思いますusers
。その後、シェルはそのユーザーのホームディレクトリのみを機能cd
または組み込みにできるだけ完成させます。
無視モードでファイルにユーザー名を追加するのがうまくいかない理由はわかりませんcompletion.zsh
。変更後に構成を再ロードしていますか?