zsh gitオートコンプリートの調整


10

Ubuntu Hardyでbashからzsh 4.3.4に切り替えました。私はgitで開発していて、デフォルトのgit補完と常に競合していることに気づきます。ファイル名補完は、(git-ls-filesを使用して)追加または削除したものを検出することで賢くなりますが、時々問題が発生します---たとえば、サブディレクトリにいる場合です。また、カスタムgitエイリアス(たとえば、コミットのエイリアスとしてのgit ci)についても認識しません。

zshスーパーユーザー、この状況をどのように改善すればよいですか?

以下は私の考えの一部ですが、私はzshを初めて使用するので、それらを実装する方法がわかりません。

  • git filenameの補完を無効にして、branch / tag / command-name / command-optionの補完のみを残します。
  • 「スマート」ファイル名補完を通常のzshファイル名補完に置き換えます。
  • これらのバグが修正されている場合は、新しい_git完了ファイルを取得し、システムのものをオーバーライドします。

ありがとう!



はい、私が知る限り、それはgitプロンプトを追加するだけで、基礎となる補完を微調整しません。
Emil Sit

誰かがすべてのgitコマンドのすべての「スマート」補完を無効にする方法を教えてもらえますか?IOが多すぎます。シェルは即座に応答する必要があります。私はgitコマンドの古き良き単純なファイル名補完に戻りたいだけです。これをウェブ検索するたびに、一般的なzsh manページ情報の迷路が表示されます。
Peter Lyons、2010

2
シェルがIOの実行をブロックする原因となる厄介なgitの完了を無効にしたい人のために、Ubuntu 10.04でこれを実行しました: sudo mv /usr/share/zsh/functions/Completion/Unix/_git /usr/share/zsh/functions/Completion/Unix/OFF_git
Peter Lyons

回答:


5

Zshの最新バージョンにアップグレードしてみてください。4.3.4から4.3.10にアップグレードしたところ、少なくともGitエイリアスが完了しない問題が修正されました。

私のインストールをハッキングする代わりに、これを私のローカルに追加しました.zshrc

customzsh=/usr/local/src/zsh-4.3.10/bin/zsh-4.3.10
if [ "$SHELL" != "$customzsh" ]; then
  export SHELL=$customzsh
  exec $customzsh
fi

5

大規模なプロジェクトの場合、より新しいgit完了スクリプトでも非常に遅くなります。それらを無効にして通常のファイル補完を使用するには、.zshrcに次のコマンドを配置します。

compdef -d git
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.