如何在保留标题的同时滚动大型数据文件

如何在保留标题的同时滚动大型数据文件

假设我有一些大的数据文件,它在垂直和水平方向上溢出屏幕。如何在标题行保留在屏幕上的情况下浏览该文件?

目前,我正在使用less -S,这样我就可以很好地水平和垂直滚动我的文件。然而,当向下滚动时,标题行明显消失。有没有办法减少这些使用?

另一种方法是vim在分屏模式下使用:set nowrap.但是,现在如果我水平滚动,顶部窗口不会以相同的方式滚动(:windo set scrollbind据我所知,仅适用于垂直滚动)。

答案1

在支持设置滚动区域的终端上:

tailf() ( # args: <file> [<number-of-header-lines>]
  trap 'tput csr 0 "$((LINES-1))"' INT
  tput csr "$((1+${2-1}))" "$((LINES-1))"
  tput clear
  {
    head -n"${2-1}"
    printf "%${COLUMNS}s\n" "" | tr ' ' =
    tail -n "$((LINES-1-${2-1}))" -f
  } < "$1"
)

zsh(假设有一个类似于或 的shell ,它根据终端的大小bash设置$COLUMNS和变量)。$LINES

答案2

如果您熟悉 vim,这可能是您的最佳选择。您可以通过更改启用水平滚动绑定仅'scrollopt'

set scrollopt=hor

因此,通过vim -u NONE,您可以通过以下方式获得所需的行为:

:set scrollopt=hor
:set nowrap
:1split
:windo set scrollbind

您可能需要分别调整'sidescroll''sidescrolloff'更改跳过的列数以及距边缘跳过开始的距离。

答案3

试试这个(你需要安装multitail):

multitail -du -t "$(head -n 1 filename)" filename

或者,对于长于一行的标题:

multitail -wh 2 -l "head -n 2 filename" filename

如果您想跟踪命令输出而不是文件:

multitail -wh 2 -l "command | head -n 2" -l command

-t酌情使用。请注意,您可能需要使用unbuffer所以你的命令输出会立即出现。

您可以使用-D禁用表单状态行的显示-wh(这会违背表单的目的-t)。

答案4

的前沿版本less通过该选项支持这一点--header

较少版本 603 发行说明

版本 603 于 2022 年 3 月 15 日发布进行 Beta 测试。

以下是版本 590 和版本 603 之间的差异:

  • 添加 --header 选项。
  • 添加 --no-number-headers 选项。
  • 添加 --status-line 选项。
  • ...

来源:https://greenwoodsoftware.com/less/news.603.html

相关内容