我编写了一个简单的补全函数,它能完成我想要的功能,但有一个例外。当我输入 M-*(“insert-completions”)时,它的补全不会像文件补全那样展开。
这是一个固有的限制还是我可以启用的?
我刚刚在另一台计算机上尝试过(使用了稍微不同的 BASH 版本),并且它在那里运行正常。
- 适用版本:3.2.25(1)-release(Linux、CentOS 5.5)
- 不适用:3.2.48(1)-release(MacOS X 10.6.7)
更新:我正在寻找一个可以解释这两个系统之间差异的假设。
答案1
我刚刚添加了以下代码从此网页致我的.bash_profile
:
_foo()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts="--help --verbose --version"
if [[ ${cur} == -* ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
fi
}
complete -F _foo foo
foo --
在 Terminal.app 中foo --help --verbose --version
按下时扩展为。Meta-*
$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.
因此:我无法在 Mac OS X 10.6.7 上使用相同版本进行重现bash
。安装后您是否更改了环境,例如通过 Macports/Fink/Homebrew 安装第三方 unix 内容?尝试通过创建新用户帐户来使用全新的终端配置。
确保您确实按下了Meta
- 它可以配置在终端中。如果您不设置此选项,则没有Meta
:
还有其他Meta
捷径吗readline
?
如果这不起作用:由于 10.7.0 Lion 尚未上市,我建议您只考虑预发布软件中可能存在的错误,并将其报告给适当的地点。