重复上一个匹配“两个单词”的命令 zsh

重复上一个匹配“两个单词”的命令 zsh

我想重复执行与 匹配的最后一个命令foo bar。使用!!不起作用(它不是我使用的最后一个命令), 也不起作用!foo,因为我的历史记录看起来像

foo bar dee zep
foo boo lee kee
foo bee

如果我尝试输入!foo bar,当我按下空格键时,zsh系统会自动完成为foo bee(与 一样)。我该怎么做?!!

答案1

!?foo bar

http://zsh.sourceforge.net/Doc/Release/Expansion.html#Event-Designators

编辑:不,您不能转义空格。如果您需要添加不属于历史扩展的内容,请用另一个分隔符将其分开?,例如:

echo hello
echo foo
!?echo hello? world # runs "echo hello world"

答案2

更好的答案:

!{?foo bar?}

我发现括号有助于延迟魔法空间的历史扩展,尽管它们被记录为:

将历史引用与相邻字符隔离开来(如有必要)。

在页面上:

http://zsh.sourceforge.net/Doc/Release/Expansion.html#History-Expansion

注意:在某些情况下,使用n前一个历史项的语法如下:

!-2

对于第二条命令返回,!-1!!

相关内容