Bash 中 Mercurial 的制表符补全?

Bash 中 Mercurial 的制表符补全?

在命令行上使用 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

相关内容