zshに切り替えて、bashよりも優れていることがわかりましたが、oh-my-zsh(以下、「-」」に問題があります。 [〜#〜] omz [〜#〜] ")オートコンプリート機能。
git chec
と入力すると、OMZはそれをgit check
に完了します。 in bashgit checkout
まで完了します。リモートブランチにも問題があります。ori
がoriG
に完了し、orig
がOrigin
に、bashで取得されます。 Origin/
まで完了
checkout
のような他のgitコマンドでも同じ問題があります。
問題は、プラグインによって追加されたエイリアスだと思います。慣れたくないので使用しませんが、オートコンプリートが壊れてしまいます。
zshでbashオートコンプリート(bashに組み込みのオートコンプリートがないことはわかっています)を取得する方法はありますか?または、OMZプラグインをハックして、更新のたびに壊れないようにする方法。
完了とそれがどこから来るのかは、かなり混乱する可能性があります。例としてUbuntu14.04システムを取り上げます。
$ dpkg -L zsh-common | grep git
/usr/share/zsh/functions/Completion/Debian/_git-buildpackage
/usr/share/zsh/functions/Completion/Unix/_stgit
/usr/share/zsh/functions/Completion/Unix/_git
/usr/share/zsh/functions/Completion/Unix/_topgit
/usr/share/zsh/functions/VCS_Info/Backends/VCS_INFO_get_data_git
/usr/share/zsh/functions/VCS_Info/Backends/VCS_INFO_detect_git
/usr/share/zsh/functions/Misc/run-help-git
zsh-common
パッケージには、git完了関数が含まれています。一方、git
パッケージには、bashおよびzshの補完ファイルも付属しています。
$ dpkg -L git | grep compl
/etc/bash_completion.d
/etc/bash_completion.d/git-Prompt
/usr/share/bash-completion
/usr/share/bash-completion/completions
/usr/share/bash-completion/completions/git
/usr/share/bash-completion/completions/gitk
次のようなファイルが含まれています
$ head -n 5 /usr/share/bash-completion/completions/gitk
# bash/zsh completion support for core Git.
#
# Copyright (C) 2006,2007 Shawn O. Pearce <[email protected]>
# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
# Distributed under the GNU General Public License, version 2.0.
Gitパッケージは、oh-my-zshなどの凝ったアドオンなしで有効にできるgit対応のプロンプトも提供します。
要約すると、gitサブコマンドの完了はシェル(zsh)から取得できます。
https://github.com/zsh-users/zsh/blob/master/Completion/Unix/Command/_git
gitから
https://github.com/git/git/tree/master/contrib/completion
またはoh-my-zshなどのプラグインから。
あなたの質問に戻るには:あなたが説明するgit chec
を完了するという古い振る舞いは、実際にはバグがあります。 chec
はまだあいまいであり、checkout
で始まるサブコマンドが複数あるため、適切な完了スクリプトでchec
まで完了しないでください。その動作が必要な場合は、以前に使用していた多くの完了スクリプトのどれを見つけ、oh-my-zsh gitプラグインを無効にして、古い完了スクリプトを引き続き使用します。
または、エイリアスを設定して慣れることをお勧めします。使用できます
git config --global alias.co checkout
git co
を新しいgit checkout
にするために-oh-my-zshプラグインはこれらのエイリアスを認識し、次にブランチ名とタグ名を完成させます!