BashでMercurialのタブ完成?

BashでMercurialのタブ完成?

Tabキーをインテリジェントに使用して、利用可能なサブコマンドなどを完了するコマンドラインでSubversionを使用してください。

$ svn c<tab>
cat         checkout    cl          co          copy        
changelist  ci          cleanup     commit      cp  

一方、Mercurialは少なくとも基本的にタブ完成機能がないようです。

$ hg c<tab> 
[nothing happens]

MercurialのBash Complete機能を使用できますか?動作させる最も簡単な方法は何ですか? 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ではデフォルトで動作します。バッシュから:

$ 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

関連情報