我有一个有很多输出的程序。完成后,我经常想滚动回运行的开头,以便在那里查看一些内容。由于输出很长,我看到自己无休止地使用 PageUp 滚动并试图将右侧的滚动条拖到可能开始的位置。过了一段时间,这开始变得很烦人,所以我想知道:
有没有办法让终端轻松滚动回给出最后一个命令的部分?
我有一个有很多输出的程序。完成后,我经常想滚动回运行的开头,以便在那里查看一些内容。由于输出很长,我看到自己无休止地使用 PageUp 滚动并试图将右侧的滚动条拖到可能开始的位置。过了一段时间,这开始变得很烦人,所以我想知道:
有没有办法让终端轻松滚动回给出最后一个命令的部分?
我刚刚在 OSX 的终端中找到了这个:
编辑 > 导航 > 跳转到上一个标记:cmd + UP。
在 LINUX 中实现它
在提示符中添加一个标识符(例如在 .bashrc 的底部添加):
promptCount=0 PROMPT_COMMAND=promptCount=$((promptCount+1)) PS1="/\$promptCount\\ $PS1"
现在使用终端的搜索功能,也许是 ++ Ctrl,作为你想要的提示行。ShiftF
让它更方便:
安装
xdotool
(命令行 X11 自动化工具)创建一个函数,该函数将按下您在
N
通过搜索功能查找提示行时按下的确切键(添加到 .bashrc 的底部):gp () { xdotool key ctrl+shift+F; xdotool type /$1\\ ; xdotool key KP_Enter;sleep 0,2; xdotool key Alt+F4; }
(至少这些是我在 Manjaro Xfce 中按下的确切键)
现在:
gif 中没有显示一个小框架,其中出现了小搜索窗口,N
写了标识符,Enter按下键,然后关闭窗口。您可以尝试更快地更改为 sleep 命令提供的参数的值。就我而言,它运行良好,直到 0,11 左右。
如果您使用的是 GNOME Terminal 之类的终端,则可以向后搜索。例如,Ctrl++然后输入文字命令或正则表达式以匹配它(并确保相应地设置“匹配为正则表达式”)Shift。f
一种解决方法是将输出发送到寻呼机,例如less
,您可以在其中导航和检查输出,然后返回命令行,就好像没有打印任何内容一样。
如果需要一些时间才能打印大部分输出(例如调用 make 时),一个简单的 Hack 可以工作:
执行命令后立即向上滚动一点点(例如,一行)。由于您不再处于底部,这可以防止大多数终端自动向下滚动。一旦您认为输出已打印(滚动条位置和感觉是很好的指标),您就可以向下滚动。只是避免在打印时滚动到最后一行。
less
例如,我将输出通过管道传输到command | less
,因为它有大量用于快速导航的有用键,而且它支持搜索。您还可以在输出的最开始自动开始。
以下是一些用于快速导航的有用命令:
f
或SPACE
向前移动一页,b
向后移动一页。一页是指值得输出的终端窗口大小。g
去一开始,G
去结束,[n]g
跳到第一n
行。例如5g
将跳转到第 5 行。/pattern
搜索一个术语,然后导航到n
下一个和N
上一个出现。支持正则表达式。q
退出。有关更多信息,请执行man less
。手册页也less
默认使用,因此上述所有工作。
在带有 iTerm2 的 MacOS 上:
您必须安装 Shell 集成(iTerm -> 安装 Shell 集成),然后打开一个新选项卡。
按Cmd+ Shift+Up跳到最后一个标记。也可以在编辑 -> 标记和注释 -> 下一个标记下找到。
简单地将输出重定向到文件,从而保持终端窗口“干净”不是更容易吗?
就像是:command >> output_file
如果您与 合作screen
,我认为有办法。
screen
使用命令启动会话Ctrl+a
后跟[
. 屏幕进入复印模式。也screen
有很多优点。检查http://kb.iu.edu/data/acuy.html
我们可以在运行命令之前清除终端,使用Ctrl- L。
然后在运行命令后,一直返回Ctrl- Home。