前言
最近在使用ROS2时,发现切换到zsh后无法自动补全,但是在Bash中很好的工作,折腾一下午没在网上找到相关解决办法,最后在githubAutocomplete fails while using zsh.上发现了相关的问题。目前该Bug还为得到有效解决,可以通过以下两个方法暂时规避。

解决方法
打开setup.zsh文件

sudo vim /opt/ros/humble/setup.zsh

在末尾添加如下两个指令之一:

complete -o nospace -o default -F _python_argcomplete "ros2"

或者

# argcomplete for ros2 & colcon
eval "$(register-python-argcomplete3 ros2)"
eval "$(register-python-argcomplete3 colcon)"

然后重新source即可。