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

Mik*_*ike 38 less scrolling

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

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

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

例子

这一行:

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

将滚动到: ng/URL"

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

Gil*_*il' 33

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

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

  1. 确定您的终端为这些组合键发送的控制序列。终端发送以转义符(在各种上下文中可以写成\e, \033, ^[)字符开头的字节序列,用于功能键和键和键。按Ctrl+ V Shift+Left在shell提示:此插入转义字符字面(你会看到^[在屏幕上),而不是它是由你的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)
    
    Run Code Online (Sandbox Code Playgroud)

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

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


小智 29

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

从手册页:

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

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

少 -S -# 10 my_file

  • @Trismegistos 是的,您可以使用 `export LESS="-#1"` 在 `~/.bashrc` 中设置环境变量 (3认同)
  • 如果数字以小数点开头,您还可以设置屏幕宽度的百分比。例如,`-# .25` 将滚动屏幕宽度的 1/4。 (2认同)

Mik*_*ike 11

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

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