如何阻止 bash 过于智能地限制完成选项?

如何阻止 bash 过于智能地限制完成选项?

当我做这样的事情时,我经常遇到 bash 妨碍我:

cmake -DCMAKE_INSTALL_PREFIX=/usr/<TAB><TAB>

显然,bash 没有看到cmake可以接受路径,我不明白任何事物建议完成。例如,在使用 bash 的 Ubuntu 14.04 上会发生这种情况4.3.42。在使用 bash 的 Ubuntu 12.044.2.25和使用手动编译的 bash 的 BLFS 上不会发生这种情况4.3.39

作为解决方法,我必须在行ls的开头插入,在=和 路径之间添加一个空格,然后 bash 才会向我显示完成选项。在写完整个路径后,我现在不必忘记删除添加的解决方法。

如果没有这种智能,我如何设置 bash 来运行 - 即如果没有任何其他建议,则始终建议路径?

答案1

Bash 在cmake.它正在寻找一个名为 的目录,-DCMAKE_INSTALL_PREFIX=其中包含一个名为 的子目录usr,但没有找到任何内容。在这种情况下获得文件名补全的快速解决方法是在等号后添加一个空格,然后将其删除。

无论上下文如何,您始终可以通过调用 readline 函数(默认情况下complete-filename绑定到Alt+)来完成文件名。/

我认为 bash 没有通用的完成后备功能,您必须将其添加到每个单独的完成功能中。 (或者切换到 zsh。)

相关内容