当我输入 bash 并按“tab”键自动完成时,有时会花费大量时间。例如,文件 IO 读取目录需要超过 5 秒,因此我必须等待 IO 完成才能继续输入。我感到很沮丧,然后按下 Ctrl-C,这样我就可以重做我正在输入的内容。
Ctrl-C 很不幸,因为我必须重新输入所有内容。我怎样才能告诉 bash 停止尝试满足我的自动完成请求。
$ /long/path/to/some/d # once I've typed this, I press <TAB>. I now will be
# stuck waiting for perhaps 10 seconds. The only thing I
# know to do is Ctrl-C. When I press Ctrl-C, I am forced
# to retype the original command string.
$
答案1
我刚刚发现这个这里。
使用Ctrl+\
。它将停止完成并返回到命令行,而不会丢失当前命令。
答案2
如果没有制表符补全,您可能会遇到类似的问题。这不会引入技术差异,即应用相同的解决方案。
一种可能性是在后台启动搜索并将结果写入 FIFO。您可以在超时后从 FIFO 中读取数据 ( read -t 0.3 ...
)。
我想我最近在这里看到了一个比 FIFO 更简单的解决方案......但目前我不记得了。read -t
也适用于管道,但完成read
不会杀死管道的早期部分,并且管道仅在其所有部分完成后才返回。
答案3
在 Ubuntu 16.04 上,点击q
对我有用。