![for 循环中的制表符补全不起作用](https://linux22.com/image/53898/for%20%E5%BE%AA%E7%8E%AF%E4%B8%AD%E7%9A%84%E5%88%B6%E8%A1%A8%E7%AC%A6%E8%A1%A5%E5%85%A8%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
可执行命令的制表符补全在 bash 的交互式 for 循环中不起作用。我本可以发誓它曾经有效,但我对它从未有效的想法持开放态度,我快要疯了。它在常规命令行中运行良好,而不是在循环中运行。我一直发现自己 ^Cing 不再编写一个循环来完成名称,这样我就可以复制并粘贴它(实际上,我的命令名称并不像我在下面的示例中使用的“whatis”那么简单)。
例子:
$ which whatis
/usr/bin/whatis
$ wh<TAB>(BEEP)<TAB>
whatis whereis while who
wheel which whiptail whoami
$ what<TAB>is
usage: whatis keyword ...
$ for i in foo bar ray
> do
> what<TAB>(BEEP)<TAB>(BEEP)
环境如下:
$ bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
答案1
那么不妨将其作为答案发布。作为一种可能的解决方法,您可以简单地避免破坏循环并将所有内容保持在同一行:
for i in foo bar ray; do what<TAB>
以上将使您能够what
按预期完成。