write simple git completion for bash

This commit is contained in:
Felix Van der Jeugt 2017-10-09 10:22:36 +02:00
parent c703a6f0df
commit 45f04eaa57
No known key found for this signature in database
GPG Key ID: 58B209295023754D
2 changed files with 20 additions and 0 deletions

19
bashrc
View File

@ -28,10 +28,29 @@ unset GREEN
unset RESET unset RESET
# Completion # Completion
_comp_git() {
local IFS=$'\n'
# $1 is the name of the command whose arguments are being completed
# $2 is the word being completed
# $3 is the word preceding the word being completed
# branch names
COMPREPLY=( $(git branch -a --format "%(refname:short)" | grep "^$2") )
# remotes
COMPREPLY+=( $(git remote | grep "^$2") )
# subcommands
if [ "$3" = "git" ]; then
COMPREPLY+=( $({ compgen -c "git-"; command ls /usr/libexec/git-core; } | sed -n 's/^git-//p' | grep "^$2") )
fi
}
complete -c man complete -c man
complete -cf sudo complete -cf sudo
complete -cf exec complete -cf exec
complete -cf run complete -cf run
complete -fF _comp_git git
# history # history
export HISTCONTROL=ignorespace:erasedups export HISTCONTROL=ignorespace:erasedups

View File

@ -18,3 +18,4 @@
pushf = push --force-with-lease pushf = push --force-with-lease
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
ff = merge --ff-only ff = merge --ff-only
co = checkout