zsh:如何检索上一个命令行?

Oli*_*ams 3 command-line zsh

我想创建一个命令来获取匹配的先前命令,如下所示:

match-latest "ssh root@150"
Run Code Online (Sandbox Code Playgroud)

但随后退出并使用最新的匹配项填充命令提示符,例如:

owilliams@OWILLIAMS010451 ~/go/ % ssh root@150.2.3.4
Run Code Online (Sandbox Code Playgroud)

并将其留给用户编辑(如果需要)并自行按 Enter 键。这可能吗?我该怎么做呢?

zsh我在 MacBook Pro OSX 上使用5.8

Mar*_*ert 8

提供了多种从历史记录中检索命令行的方法。这里\xe2\x80\x99s只是其中的一个选择。

\n

键绑定

\n
    \n
  • \xe2\x86\x91可单步执行先前的命令行。
  • \n
  • Alt.可单步执行前一个命令行的最后一个单词。
  • \n
  • CtrlR(\xe2\x80\x9creverse\xe2\x80\x9d) 并开始键入以搜索以前的命令行。
  • \n
  • 在新命令行的开头键入一个单词,然后按AltP(\xe2\x80\x9cprevious\xe2\x80\x9d) 以单步执行以该单词开头的先前
  • \n
\n

有关更多选项,请参阅Zsh 手册中的Zsh 行编辑器:历史控制。

\n

历史扩展

\n
    \n
  • !!在当前命令行的任意位置键入,然后按AltSpace将其替换为上一个命令行。
  • \n
  • 键入!<word>并按将其替换为以开头的AltSpace最新命令行。<word>
  • \n
  • 键入!?<word>并按AltSpace将其替换为包含 <word>.
  • \n
\n

有关更多选项,请参阅Zsh 手册中的历史记录扩展。

\n

fc内置命令

\n
    \n
  • fc在新命令行中输入(\xe2\x80\x9cfix command\xe2\x80\x9d) 并按Enter在外部编辑器中打开上一个命令行(通过设置 配置$EDITOR),之后 Zsh 运行修改后的命令行。
  • \n
  • 用于以开头的fc <word>最新行。<word>
  • \n
  • 传递-s(\xe2\x80\x9csilently\xe2\x80\x9d) 标志以立即执行该行而无需先对其进行编辑。
  • \n
\n

请参阅Zsh 手册中的Shell 内置命令:了解更多选项。fc

\n