想象一下,我在终端中有一个 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 上直接实现(带有控制台的进程可以访问其自己的回滚缓冲区),但尽管如此,我从未见过这样做。