使用较少的 -S 以较小的增量水平滚动

使用较少的 -S 以较小的增量水平滚动

我用来less解析 HTTP 访问日志。我想在单行上整齐地查看所有内容,因此我使用-S.

我遇到的问题是,我的终端窗口的前三分之一被我不关心的元数据占据。当我使用箭头键向右滚动时,我发现它滚动到了我关心的信息的开头!

我可以删除每一行的开头,但我不知道将来是否需要这些数据,而且我不想每次想查看某些日志时都维护单独的文件或运行脚本。

例子

这行:

access.log00002:10.0.0.0 - USER_X [07/Nov/2013:16:50:50 +0000]“GET /some/long/URL”

将滚动到:ng/URL"

问题

有没有办法可以按字符或单词以较小的增量滚动?

答案1

唯一的水平滚动命令滚动半屏,但您可以传递数字参数来指定字符数,例如键入会4 Right向右滚动 4 个字符。 Less 并没有真正的“当前行”概念,并且不会将一行拆分为单词,因此无法一次滚动一个单词。

您可以定义滚动固定字符数的命令。例如,如果您希望Shift+LeftShift+Right一次滚动 4 个字符:

  1. 确定您的终端为这些组合键发送的控制序列。终端发送以功能键和键和弦的转义字符(在各种上下文中可以写为\e, \033, )开头的字节序列。在 shell 提示符处^[Ctrl+ V Shift+ Left:这将按字面插入转义字符(您将^[在屏幕上看到),而不是由 shell 处理它,并插入转义序列的其余部分。常见的设置分别是Shift+LeftShift+Right发送\eO2D\eO2C

  2. 创建一个名为的文件~/.lesskey并添加以下行(如果您的终端发送不同的转义序列,请进行调整):

    #command
    \eO2D noaction 4\e(
    \eO2C noaction 4\e)
    \eOD noaction 40\e(
    \eOC noaction 40\e)
    

    除了定义Shift+的绑定之外arrow,您可能还需要arrow单独定义绑定,因为运动命令会重用上次调用的数值。调整40到您习惯的终端宽度。似乎没有办法说“现在再次使用终端宽度,无论此时它是什么”。这些绑定的缺点是您无法将数字参数传递给Leftand Right(您仍然可以将数字参数传递给Esc (and Esc ))。

然后运行lesskey,它将人类可读的文件转换为启动时读取的二进制~/.lesskey文件。~/.lessless

答案2

您可以使用选项“-#”设置水平滚动的列数。

从手册页:

-# 或 --shift
指定 RIGHTARROW 和 LEFTARROW 命令中水平滚动的默认位置数。如果指定的数字为零,则它将默认位置数设置为屏幕宽度的一半。

示例(将水平滚动设置为 10 列):

少-S -# 10 my_file

答案3

输入一个数字,即您要滚动到的列数,然后按箭头键。

来源:有用的“less”函数列表

答案4

另一种方法是使用most寻呼机。

在 中most,no-wrap ( -S) 是默认值,它Right向右滚动一列而不是半个屏幕。使用>Tab可以更快地滚动。

另一种选择是w3m寻呼机(也是最好的终端 Web 浏览器之一),您也可以使用<、和进行更细粒度的滚动(与 qwerty 键盘上的键相同)。>,.

相关内容