当前位置: 首页>>技术教程>>正文


如何将 ‘git’ 别名为 ‘g’ 以便保留 bash-completion 规则?

, , ,

问题描述

如果我这样做:

alias g='git'

我放松了所有完成规则(例如,当我在键入后按 TAB 时,分支和遥控器不再自动完成,例如 g push o )。

最佳思路

最新的 bash-completion 上游移动并重命名了一些东西。下雪了:

source /usr/share/bash-completion/completions/git
__git_complete g __git_main

在最新版本的 Ubuntu(例如 14.04,还有 Fedora 22+)中,当您遇到:

completion: function `_git' not found

完成期间。

次佳思路

适时地从 /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

第三种思路

~/.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”的错误。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12893.html,未经允许,请勿转载。