Less

使用更少的 -S 以更小的增量水平滾動

  • July 26, 2020

less用來解析 HTTP 訪問日誌。我想在單行上整齊地查看所有內容,所以我使用-S.

我遇到的問題是我的終端視窗的前三分之一被我不關心的元數據佔用。當我使用箭頭鍵向右滾動時,我發現它滾動到了我關心的資訊的開頭!

我可以刪除每一行的開頭,但我不知道將來是否需要這些數據,而且我寧願不必在每次想要查看一些日誌時維護單獨的文件或執行腳本。

例子

這一行:

access.log00002:10.0.0.0 - USER_X

$$ 07/Nov/2013:16:50:50 +0000 $$“獲取 /some/long/URL”

將滾動到:ng/URL"

問題

有沒有辦法可以按字元或單詞以較小的增量滾動?

唯一的水平滾動命令滾動半屏,但您可以傳遞一個數字參數來指定字元數,例如鍵入4 Right向右滾動 4 個字元。Less 並沒有“目前行”的概念,也沒有將一行拆分為單詞,因此無法一次滾動一個單詞。

您可以定義以固定字元數滾動的命令。例如,如果您希望Shift+LeftShift+Right一次滾動 4 個字元:

  1. 確定您的終端為這些組合鍵發送的控制序列。終端發送以轉義符(在各種上下文中可以寫為\e, \033, )字元開頭的字節序列,用於功能鍵和鍵弦。^[在 shell 提示符下按Ctrl++ V ShiftLeft這會按字面意思插入轉義字元(您將^[在螢幕上看到),而不是由 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 ))。

然後 run lesskey,它將人類可讀的轉換為啟動時讀取~/.lesskey的二進製文件。~/.less``less

引用自:https://unix.stackexchange.com/questions/169886