bash(或终端)可以从终端缓冲区内容自动完成(制表符完成)吗?

bash(或终端)可以从终端缓冲区内容自动完成(制表符完成)吗?

想象一下,我在终端中有一个 bash 会话,紧接着一些输出:

$ grep foo *.txt
this.txt: something123 foo
$

在此 grep 之后,假设我的下一个命令将something123作为参数。

something123是否有任何工具可以让我在提示符下制表/自动完成?即从最近的终端缓冲区自动完成读取?

具体来说:我希望能够grep在提示符下键入几个字符,something123其余的字符出现,就像当前工作目录中文件的名称something123一样。something123

编辑:我目前正在使用 xfce4 的终端(在 Arch Linux 上),但对其他终端也开放!

答案1

您可以使用自定义脚本执行此操作,但据我所知,这不是任何系统上的内置行为 - 当然不是通过制表符完成。

http://tldp.org/LDP/abs/html/tabexpansion.html了解如何自己编写类似代码的说明。警告:如果您决定自己编写此代码,则需要详细了解 bash 命令,但考虑到您只想执行某个 grep,我认为这不会太难。

答案2

你没有说你使用的是什么系统...

Mac OS X 上的 iTerm2 可以使用 Cmd+; 键盘快捷键执行此操作。它与 tab 补全不太一样(您必须从终端的 GUI 补全列表中进行选择,然后它才会将任何按键发送到底层进程),但它仍然可以节省您的按键次数。请参阅http://www.iterm2.com/#/section/features/autocomplete

如果 Unix 没有类似的东西我会很惊讶。

这种行为实际上最容易在 Windows 上直接实现(带有控制台的进程可以访问其自己的回滚缓冲区),但尽管如此,我从未见过这样做。

相关内容