任何 shell 都可以进行参数级交互式搜索吗?

任何 shell 都可以进行参数级交互式搜索吗?

有时我需要重用某些长参数,例如路径。

如果我使用历史搜索(CTRL+ R),我可能会找到一些包含路径的命令,但我仍然需要删除旧命令中的其他任何内容,然后移动光标以写入新命令。更糟糕的是,我不能连续多次这样做。

我想知道是否有 shell 提供参数级历史搜索?

查看历史命令(和参数)的制表符补全在某种程度上有所帮助。但补全必须与您键入的前缀匹配,而不是任何子字符串。

答案1

如果我理解正确的话,你正在追求动态完整历史(参见例如man bashhttp://www.cl.cam.ac.uk/local/sys/unix/applications/bash/),默认绑定到M-Tab.

答案2

在 zsh 中,新式补全处于活动状态(即compinit在您的 中.zshrc),_history_complete_word函数提供了这个功能。它可以通过两个小部件访问:_history-complete-older_history-complete-newer,默认绑定到ESC ,和。ESC /这两个命令循环遍历 shell 历史记录中以当前单词作为前缀的所有单词。

答案3

我的 插入zsh-autocomplete现在可以这样做:

在此输入图像描述

正如您所看到的,按 后^R,您可以输入要查找的单词的任何部分。

答案4

使用 ALT- 进行操作。 ,来自 bash 联机帮助页:

- yank-last-arg (M-., M-_):
Insert the last argument to the previous command (the last word of
the previous history entry). With an argument, behave exactly like
yank-nth-arg. Successive calls to yank-last-arg move back through the
history list, inserting the last argument of each line in turn. The
history expansion facilities are used to extract the last argument,
as if the "!$" history expansion had been specified.

相关内容