我用来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+Left和Shift+Right一次滚动 4 个字符:
确定您的终端为这些组合键发送的控制序列。终端发送以功能键和键和弦的转义字符(在各种上下文中可以写为
\e
,\033
, )开头的字节序列。在 shell 提示符处^[
按Ctrl+ V Shift+ Left:这将按字面插入转义字符(您将^[
在屏幕上看到),而不是由 shell 处理它,并插入转义序列的其余部分。常见的设置分别是Shift+Left和Shift+Right发送\eO2D
和\eO2C
。创建一个名为的文件
~/.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
文件。~/.less
less
答案2
您可以使用选项“-#”设置水平滚动的列数。
从手册页:
-# 或 --shift
指定 RIGHTARROW 和 LEFTARROW 命令中水平滚动的默认位置数。如果指定的数字为零,则它将默认位置数设置为屏幕宽度的一半。
示例(将水平滚动设置为 10 列):
少-S -# 10 my_file
答案3
输入一个数字,即您要滚动到的列数,然后按箭头键。
答案4
另一种方法是使用most
寻呼机。
在 中most
,no-wrap ( -S
) 是默认值,它Right向右滚动一列而不是半个屏幕。使用>或Tab可以更快地滚动。
另一种选择是w3m
寻呼机(也是最好的终端 Web 浏览器之一),您也可以使用<、和进行更细粒度的滚动(与 qwerty 键盘上的键相同)。>,.