我尝试为别名添加完成:alias m =’man’.
所以,我在我的.bashrc中添加了完整的-F _man m.
所以,我在我的.bashrc中添加了完整的-F _man m.
问题是用于完成的函数_man不是在bash会话开始时定义的,而是在$man命令上执行第一个tab竞争时定义的.
所以:
$complete -p | grep _man可以不返回任何内容,也可以返回:
complete -F _man man complete -F _man apropos complete -F _man whatis
因此,当我尝试使用$m命令完成选项卡时,我可以得到:
$m -bash: completing : function « _man » not found $m
我对函数_aptitude和_apt-get也有同样的问题
我想要的是,使用我的.bashrc在bash启动时强制创建函数_man,_aptitude,_apt-get.
也许有可能使用compgen builtin.
我的bash版本是:
GNU bash,版本4.2.45(1)-release(x86_64-pc-linux-gnu)
谢谢阅读.
编辑:事实上,类似的问题已经存在并得到了回答:
– bash-completion – completion function defined the first time a command is invoked –
解决方法
你有.bashrc:
alias m='man' complete -F _man m
只需添加:
_completion_loader man
然后你在$m的完成工作将很好,即使没有在$man上执行制表完成.
_completion_loader可能未在您的发行版中定义.这是在Ubuntu 14.04的.bashrc中找到的代码的副本:
_completion_loader () { local compfile=./completions; [[ $BASH_SOURCE == */* ]] && compfile="${BASH_SOURCE%/*}/completions"; compfile+="/${1##*/}"; [[ -f "$compfile" ]] && . "$compfile" &> /dev/null && return 124; complete -F _minimal "$1" && return 124 }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。