从当前命令的中间运行子shell

Pan*_*tis 16 command-line zsh

我经常在这种情况下发现自己。我正在输入命令,在完成之前我需要检查其他内容。

有没有办法用我目前的输入打开某种子shell,到目前为止我还记得,然后当我退出这个子shell时,我又回到了原来的地方?

$ mylongcommand -n -e <SOME KEY COMBINATION WHICH OPENS A SUBSHELL>
$ date
...
$ exit
$ mylongcommand -n -e <BACK TO WHERE I WAS>
Run Code Online (Sandbox Code Playgroud)

我正在使用 zsh

Zac*_*ady 18

我通常使用Ctrl+U擦除当前行并将其保存到缓冲区中。从那里我做任何我需要在mylongcommand. 然后当我准备好时,我使用Ctrl+Y粘贴mylongcommand回我的提示中。

当我检查某事时记住一个半键入的命令


Bod*_*odo 16

有一个组合键EscQ可以保存命令缓冲区并允许输入新命令。运行命令后,缓冲区包含您之前键入的内容。如果在完成此操作之前必须运行另一个命令,则可以EscQ再次键入。

(按下后我没有尝试打开子shell EscQ。)

请参阅http://zsh.sourceforge.net/Intro/intro_10.html并搜索“esc-q”


Dig*_*uma 7

我对此的解决方案绝对是低技术和笨重的,但依赖于您可能已经熟悉的键序列:Hit Ctrl+ A, then #, then ENTER

这具有#在行的开头插入 a 的效果,从而使其成为注释,然后执行它,从而将其推入命令历史记录中。然后,您可以输入辅助命令,然后向上滚动命令历史记录到注释命令,#根据需要删除并完成命令。