在命令行上使用 Subversion,它可以智能地使用 Tab 键补全可用的子命令等:
$ svn c<tab>
cat checkout cl co copy
changelist ci cleanup commit cp
另一方面,Mercurial 似乎没有制表符补全功能,至少是开箱即用的:
$ hg c<tab>
[nothing happens]
Mercurial 的 Bash 补全功能是否可用?让它发挥作用的最简单方法是什么?我使用的是 Ubuntu 11.04。
答案1
Mercurial 提供了自己的 bash 补全 - 请参阅 tarball 中的 contrib/bash_completion。至少在 openSUSE 上,这个文件被安装到 /etc/bash_completion.d/ 中,这样 Mercurial 的 bash 补全就会自动工作。您可能需要检查 Ubuntu 的 Mercurial 软件包是否安装了完成脚本。
答案2
我从源代码版本构建了 Mercurial,并且必须自己安装完成脚本。执行此操作的方法如下:
$ cd
$ wget http://selenic.com/hg/raw-file/25e4d2f35965/contrib/bash_completion -P opt/packages/mercurial
$ echo ". opt/packages/mercurial/bash_completion" >> .bashrc
$ . opt/packages/mercurial/bash_completion
完成已开启。
答案3
在 Ubuntu 10.04 中,它对我来说是开箱即用的。在bash中:
$ hg c
cat checkout clone commit copy
或者在 zsh 中:
$ hg c
cat checkout ci clone co commit copy cp
也许您缺少一个包(或者您遇到了错误)。
在我的系统上,完成文件由 Mercurial 包提供:
$ dpkg -S /etc/bash_completion.d/mercurial
mercurial: /etc/bash_completion.d/mercurial