Meta-* / “insert-completions” 通过“complete -F ...”定义的完成失败

Meta-* / “insert-completions” 通过“complete -F ...”定义的完成失败

我编写了一个简单的补全函数,它能完成我想要的功能,但有一个例外。当我输入 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 尚未上市,我建议您只考虑预发布软件中可能存在的错误,并将其报告给适当的地点

相关内容