web-dev-qa-db-ja.com

Homebrewを使用したOS X YosemiteのzshでGit補完が機能しない

Zshシェルで新しくインストールしたOS X Yosemiteでgitを完了できません。私はhomebrewを使用してgitとzshの両方をインストールしました:

brew install zsh git

Homebrewを介してgitをインストールすると、タブ補完が設定されますが、git <tab>を実行すると、gitコマンドではなく、ディレクトリをタブ補完しようとします。つまりエラーが発生していない-機能していない-セットアップされていないように。

これは私がこれまでに知っていることです

どうやらzshは_*のディレクトリの1つで$fpathファイルを探すことにより、オートコンプリートの方法を探します。これは私のものです:

% echo $fpath
/usr/local/share/zsh/site-functions /usr/local/Cellar/zsh/5.0.6/share/zsh/functions

目にする最初のパスを見てください。

% ls -l /usr/local/share/zsh/site-functions
lrwxr-xr-x  1 watson  admin   55 Oct 20 12:08 _git -> ../../../Cellar/git/2.1.2/share/zsh/site-functions/_git
lrwxr-xr-x  1 watson  admin   70 Oct 20 12:08 git-completion.bash -> ../../../Cellar/git/2.1.2/share/zsh/site-functions/git-completion.bash

だから、箱から出して動作するように設定されているようですが、そうではありません。

これも私が試したものです

git-completion.bash

  1. ダウンロード git-completion.bash
  2. source git-completion.bashを使用して実行する

これは一種の動作です(つまり、オートコンプリートを有効にします)が、警告を出力します。

WARNING: this script is deprecated, please see git-completion.zsh

git-completion.zsh

したがって、上記の警告のため、私は明らかに git-completion.zsh をダウンロードしてファイルの上部にあるガイドに従いましたが、基本的には最初に.bashファイルをソースにするように指示しています。それでもエラーが発生する原因です。

StackOverflowとGoogleを検索

私はこことGoogleで検索して見つけたすべてのものを試してみましたが、何もうまくいかないようです。

27
Thomas Watson

私はちょうど答えに出くわしました!

私の場合、.zshrcファイルにいくつかの重要な部分がありませんでした。しかし、最初に少し背景:

私がしようとしていることは、「 zsh Completion System 」を設定することです。 comp*で名前が付けられた多くのコマンドが付属しています。私はこれらを数回実行しようとしましたが、多くの場合、zshはそれらを知らなかったと伝えます。どうやら、あなたはとりわけそれらをautoloadする必要があります。

これは私がやったことです:

.zshrcファイルに次の行を追加しました。

autoload -U compinit && compinit
zmodload -i zsh/complist

次に、新しいターミナルを開いて実行しました。

rm -f ~/.zcompdump; compinit

次に、新しいターミナルを開いて、git <tab>が期待どおりに機能するようになりました:)

$fpathファイルにカスタム.zshrcを設定している場合、これらの行を追加することをお勧めします$fpath(違いが出るかどうかはわかりませんが)。

45
Thomas Watson

私の問題はずっと単純でした。デフォルトのシェルを変更するのを忘れました。

echo $Shell、それが/bin/bashの場合は、chsh -s /bin/zshと入力します

0
neaumusic

ホームディレクトリにあった.zcompdump-(...)ファイルを削除すると、プラグインが再び機能し始めました。

0
Matthieu Napoli