像 Mercurial 一样自动完成 Git 命令
Autocomplete Git commands like Mercurial does
不完全确定如何表达这个问题,但 Mercurial 有一个我非常喜欢的功能,当您指定命令的一部分时,它足够聪明地识别您指的是哪个命令。因此,例如:hg sta
将扩展为 hg status
。
有什么方法可以在 Git 中获得等效的行为,以便(例如)git sta
自动扩展为 git status
?
编辑:澄清一下:我知道您可以使用 Git 进行制表符补全。我也知道您可以创建别名来缩短命令。我想要的就像 Mercurial,如果你不使用 Tab 键完成它会在可能的情况下推断出命令。例如:
git stas
后面回车执行为git stash
.
只需将 this 脚本放到 ~/.git-completion.bash
并将此行添加到 ~/.bashrc
#added by KES
export LESS="-RFXS -x4"
export TZ='Europe/Zaporozhye'
#Turn off wired ~
printf "\e[?2004l"
if [ -z "$SSH_CLIENT" ]; then
export EDITOR="subl"
else
export EDITOR="rsub --port 52697"
export RMATE_PORT="52697"
fi
alias gn="git-number"
alias ge="gn -c $EDITOR"
alias ga="gn add"
alias gap="EDITOR='$EDITOR -w' gn add -p"
alias gd="gn -c git diff -b -w --ignore-blank-lines"
alias gds="gd --staged"
alias gc="gn -c git checkout"
alias gcf="git flow feature checkout"
alias gl="gn -c git log -w -b -p --ignore-blank-lines"
alias gls="git log --stat"
alias cm="EDITOR='$EDITOR -w' git commit"
gcd() {
test -n "" && cd $(dirname $(git list ))
}
source ~/.git-completion.bash
__git_complete gn _git
__git_complete ga _git_add
__git_complete gap _git_add
__git_complete gd _git_diff
__git_complete gds _git_diff
__git_complete gc _git_checkout
__git_complete gcf _git_checkout
__git_complete gl _git_log
__git_complete gls _git_log
__git_complete cm _git_commit
#added by KES
你只需要 source ~/.git-completion.bash
但为了方便我使用了更多
注意:git sta
的一个选项卡不起作用,因为有更多的完成:
$ git sta
stage stash status
尝试按 TAB 两次,或 git stat
+ TAB
Mercurial 的这个功能确实非常方便,因为它准确地知道什么时候字母数不够,什么时候命令不明确。它还为您提供了可能性列表。
这就是说,这个特性在git中是不存在的,似乎采取的方式是提供shell依赖的补全,如上所述。如果您想与 git 开发人员讨论此问题,您仍然可以在 http://www.mail-archive.com/git@vger.kernel.org/ 邮件列表中提出增强请求(或者查看之前是否已被询问过)。
不完全确定如何表达这个问题,但 Mercurial 有一个我非常喜欢的功能,当您指定命令的一部分时,它足够聪明地识别您指的是哪个命令。因此,例如:hg sta
将扩展为 hg status
。
有什么方法可以在 Git 中获得等效的行为,以便(例如)git sta
自动扩展为 git status
?
编辑:澄清一下:我知道您可以使用 Git 进行制表符补全。我也知道您可以创建别名来缩短命令。我想要的就像 Mercurial,如果你不使用 Tab 键完成它会在可能的情况下推断出命令。例如:
git stas
后面回车执行为git stash
.
只需将 this 脚本放到 ~/.git-completion.bash
并将此行添加到 ~/.bashrc
#added by KES
export LESS="-RFXS -x4"
export TZ='Europe/Zaporozhye'
#Turn off wired ~
printf "\e[?2004l"
if [ -z "$SSH_CLIENT" ]; then
export EDITOR="subl"
else
export EDITOR="rsub --port 52697"
export RMATE_PORT="52697"
fi
alias gn="git-number"
alias ge="gn -c $EDITOR"
alias ga="gn add"
alias gap="EDITOR='$EDITOR -w' gn add -p"
alias gd="gn -c git diff -b -w --ignore-blank-lines"
alias gds="gd --staged"
alias gc="gn -c git checkout"
alias gcf="git flow feature checkout"
alias gl="gn -c git log -w -b -p --ignore-blank-lines"
alias gls="git log --stat"
alias cm="EDITOR='$EDITOR -w' git commit"
gcd() {
test -n "" && cd $(dirname $(git list ))
}
source ~/.git-completion.bash
__git_complete gn _git
__git_complete ga _git_add
__git_complete gap _git_add
__git_complete gd _git_diff
__git_complete gds _git_diff
__git_complete gc _git_checkout
__git_complete gcf _git_checkout
__git_complete gl _git_log
__git_complete gls _git_log
__git_complete cm _git_commit
#added by KES
你只需要 source ~/.git-completion.bash
但为了方便我使用了更多
注意:git sta
的一个选项卡不起作用,因为有更多的完成:
$ git sta
stage stash status
尝试按 TAB 两次,或 git stat
+ TAB
Mercurial 的这个功能确实非常方便,因为它准确地知道什么时候字母数不够,什么时候命令不明确。它还为您提供了可能性列表。
这就是说,这个特性在git中是不存在的,似乎采取的方式是提供shell依赖的补全,如上所述。如果您想与 git 开发人员讨论此问题,您仍然可以在 http://www.mail-archive.com/git@vger.kernel.org/ 邮件列表中提出增强请求(或者查看之前是否已被询问过)。