我经常发现自己处于以下位置:我开始在 bash 提示符下输入一个长命令,但在中途我发现我需要使用另一个命令检查某些内容。当我在控制台(没有 X)时这是一个问题,这是经常发生的情况,因为那时我只有以下我所知道的令人不满意的方法来做到这一点:
- 点击ctrl++alt并F2登录另一个虚拟控制台,找出我想要的内容,然后返回并继续
- ctrl+ a,输入 echo + space+ enter,找出我想要的内容,按↑直到找到我的命令,ctrl+ a,delx 5,ctrl+ e,然后继续
- 突出显示到目前为止我用鼠标输入的内容(如果 gpm 正在运行,通常是这样),按ctrl+c中断,找出我想要的内容,同时小心不要使用鼠标突出显示内容,然后按鼠标中键出现新提示并继续
- 向命令行大神祈祷,写了一半的命令不会有任何不良影响,只是失败,小心翼翼地按回车键,然后找出我想要的内容,按向上箭头,直到我得到我的命令,然后继续
- 跳进我的时间机器,回到过去并提醒自己在开始输入命令之前启动屏幕,回到现在,按ctrl+ a c,找出我想要的内容,按ctrl+ a ctrl+a,然后继续
所以我想知道的是,是否有一些更优雅的方法来做到这一点?某种子 shell 命令或类似命令?
我最感兴趣的是不需要任何准备或设置即可工作的方法。
答案1
更快的版本亚历克斯的 Ctrl+ A Ctrl+ K(移动到行的前面,然后向前剪切所有内容)就是使用Ctrl+ U,它在 bash 上向后剪切,在 zsh 上使用整个行(无论当前位置如何)。然后你用Ctrl+Y再次粘贴
答案2
执行 ctrl-A 到达行首,添加哈希值并按回车键 - 这样它将作为注释保留在命令历史记录中,您可以通过向上光标返回到它
编辑:刚刚注意到这是你的#2 的一个稍微更优雅的变体;)
答案3
点击Ctrl+A
,Ctrl+K
移动到行首并删除(删除)到行尾。然后进行研究,准备好继续点击Ctrl+Y
(猛拉)以恢复已保存(已杀死)的线路。
答案4
在 bash 中,只需输入Alt+ #。
然后,当您准备好后,Up按Alt+ #。
第一个#
在行的开头放置 a 以将其转换为注释,然后接受该行,就像您按下了一样Enter。
然后,当您第二次执行此操作时,它会发现该行在#
开头已经有一个,因此它将删除它并接受它,再次为您保存密钥Enter。
如果第二次只是插入另一个#
,那么您必须输入Alt++ 。- Alt#
你可以通过输入让 zsh 做同样的事情
bindkey -M emacs '\e#' pound-insert
在你的 ~/.zshrc 中。
或者,如果您使用 vi 绑定,则可以#在 bash 和 zsh 中从命令模式键入。