跳转到上一个命令的输出开头

跳转到上一个命令的输出开头

这个问题我已经思考了大约十年了,但我从未找到答案。不过,为了具体说明,我将根据我当前的环境来提问。

在 Ubuntu 16.04 上,使用 gnome 终端,有没有办法跳转到您运行的最后一个命令的输出的开头或者包含最后一个命令本身的行? 理想情况下,我希望将此操作分配给一个方便的热键。

明显的用例:任何时候你编译某些东西并得到一个以上的错误屏幕。

这很简单,但我还没有找到办法。一些可悲的替代方案:

  • 将输出重定向到文件,然后在编辑器中打开文件。问题:增加了开发人员的时间/开销/烦恼;在文件中打开时可能会丢失 bash 格式,使输出更难阅读;总体而言,与向上滚动相比,通常会节省时间。
  • 管道到less。问题:与上面相同,而且它似乎没有从输出的顶部开始,或者让我正确滚动。
  • 管道到grep -i error。问题:可能不会显示错误消息的相关行(需要连续的行),任何 grep 解决方案通常都不强大,并且再次增加了开销。
  • 在控制台中向上搜索username@computername?问题:不知道在 gnome 终端中是否可以(其他终端可以做到),不够强大(虽然还不错),打字可能比较慢。

这些年来,人们真的一直在向上滚动来查找错误信息吗?我觉得我一定错过了什么。

编辑:迄今为止最好的替代方案:

  • reset在命令前运行,然后在执行命令后使用Ctrl++跳转到终端顶部,如下所示ShiftHome这个答案
  • 按照以下说明选择支持搜索的其他终端这个答案

答案1

嗯,你可以用标准来做到这一点gnome-terminal:

搜索动画

我所做的唯一一件事就是按++Ctrl开始搜索,标准已经是......ShiftFBackwards

只需确保有足够的滚动行可供滚动回来,方法是更改​​回滚限制:
EditProfile PreferencesScrolling
8192 仅占用几 KB 的 RAM,因此请输入合适的任何数字那里!

gnome 终端设置

还:对于上下短距离跳跃,不要忘记Shift+PgUpShift+PgDn 甚至在编译时也是如此。(不,它不会暂停编译:只需从视图中添加行...)

答案2

基于 VTE 的终端,例如 GNOME 终端、GNOME 控制台、Xfce4 终端、Terminator、Tilix、Guake 等,自 2024 年 3 月发布 GNOME 46(VTE 0.76)以来都支持此功能。

该热键暂时是硬编码的,即Ctrl+ Shift+LeftCtrl+ Shift+ Right

在底层,VTE 使用准标准 OSC 133 shell 集成转义序列来查看提示符的位置,就像其他几个终端已经做的那样。

相关内容