colconで補完を出す

colcon buildするときとかにcolconと打ってからTABキーで補完をだそうとしてうまくいかない経験はありませんか?

colconで補完が出ない!

colconと打ってからTABキーを押すと以下のようにディレクトリが表示されます.
今欲しい補完はそれじゃない...

$ colcon <TAB>
build/   install/ log/     src/     

colcon bくらいまで打って補完を出すとcolcon build/になってしまい,エラーを吐かれます.

colcon build/
usage: colcon [-h] [--log-base LOG_BASE] [--log-level LOG_LEVEL]
              {build,extension-points,extensions,graph,info,list,metadata,test,test-result,version-check}
              ...
colcon: error: argument verb_name: invalid choice: 'build/' (choose from 'build', 'extension-points', 'extensions', 'graph', 'info', 'list', 'metadata', 'test', 'test-result', 'version-check')

catkinならちゃんと補完出てたのに!!

補完を出す

colconの補完はpython3-colcon-argcompleteというパッケージで提供されています. ROS2のインストール時に一緒に入ってくるはずなので追加でインストールする必要はありません.
ただ,補完を有効にするためにスクリプトを読み込む必要があります.

スクリプト/usr/share/colcon_argcomplete/hook/というディレクトリにあり,colcon-argcomplete.bashを読み込めばOKです.*1

$ colcon <TAB>
build             extension-points  extensions        graph             info              list              --log-base        --log-level       metadata          test              test-result       version-check  

しっかり出ましたね.
よく使う人は.bashrc

source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash

と書いておくと良いでしょう

参考

Installation — colcon documentation

*1:zshの人はcolcon-argcomplete.zshを読み込んでください