これを行う場合:
alias g='git'
すべての完了規則を緩めます(つまり、入力後にTabキーを押すと、ブランチとリモートは自動的に完了しなくなります(例:g Push o
)。
/etc/bash_completion.d/git
から適切にコピーして変更し、~/.bashrc
に次の行を追加します。
complete -o bashdefault -o default -o nospace -F _git g 2>/dev/null \
|| complete -o default -o nospace -F _git g
最新のbash-completionアップストリームが移動し、少し名前を変更しました。雪が降る:
source /usr/share/bash-completion/completions/git
__git_complete g __git_main
Ubuntuの最近のバージョン(たとえば、14.04、Fedora 22以降)でこれを使用する場合:
completion: function `_git' not found
完了中。
~/.bashrc
::
alias g='git'
source /usr/share/bash-completion/completions/git
complete -o default -o nospace -F _git g
経由 http://29a.ch/2013/8/9/fixing-bash-autocomplete-on-ubuntu-13-04
最初に、元の完了コマンドを検索します。例:
$ complete | grep git
complete -o bashdefault -o default -o nospace -F __git_wrap__git_main git
これらを起動スクリプトに追加します(例:〜/ .bashrc):
# copy the original statement, but replace the last command (git) with your alias (g)
complete -o bashdefault -o default -o nospace -F __git_wrap__git_main g
# load dynamically loaded completion functions (may not be required)
_completion_loader git
_completion_loader
行は不要な場合があります。ただし、状況によっては、コマンドを入力してTAB
を初めて押した後にのみ、完了関数が動的にロードされます。したがって、元のコマンドを使用せずにエイリアス+ TAB
を試すと、「bash:completion:function not found」のようなエラーが表示される場合があります。
これを行うための更新された方法 (私にとっては完全ではありません):
cd
-ホームディレクトリに切り替えますwget https://raw.github.com/git/git/master/contrib/completion/git-completion.bash
source ~/git-completion.bash
を.bashrcファイルに追加します(このファイルをホームフォルダーに作成していない場合、bashは自動的に検索します)alias g='git'
を.bashrcファイルに追加します。source ~/.bashrc
で変更をソースします完全を期すために、~/.bash-completion
ファイルを使用して回答を追加します。このファイルは、bash完了スクリプトの最後にあります。
_xfunc git __git_complete g __git_main
_xfunc git __git_complete gl _git_log
_xfunc git __git_complete Gd _git_diff
_xfunc git __git_complete gb _git_branch
それから私の~/.bashrc
にはエイリアスだけがあります。私がしようとしていた:
~/.bashrc
をbash-completionスタッフ(それが属する場所に保管する)で汚染することを避ける✓残念ながら、_xfunc
はgit-completionをソースしています。適切に行う方法がわかったら、この回答を更新します(また、ランチパッド here で質問しました)。