Less
在 less 中刪除行號的左填充
如果在
-N
內切換開關less
,它會顯示行號。但是,即使總行數很小,似乎也添加了不必要的大量填充。例如man less
啟用行號的輸出是:1 LESS(1) 2 3 NAME 4 less - opposite of more 5 6 SYNOPSIS 7 less -? 8 less --help 9 less -V 10 less --version 11 less [-[+]aABcCdeEfFgGiIJKLmMnNqQrRsSuUVwWX~] ... 940 Version 487: 25 Oct 2016
有沒有辦法控製或減少填充到總行數所需的最少數量?
我知道我可以尋求一個程序化的解決方案(例如管道
cut
等),但我想知道是否有某種我不知道的開關或配置參數控制這種行為。
更新
此功能已以額外命令行選項的形式迅速添加到 Less 中,
--line-num-width=N
. 根據送出歷史,下面的原始答案在 Less 版本 570 之前有效。原始答案
不,沒有減少填充的選項。填充是在原始碼文件中完成的
line.c
:/* * Display the line number at the start of each line * if the -N option is set. */ if (linenums == OPT_ONPLUS) { char buf[INT_STRLEN_BOUND(pos) + 2]; int n; linenumtoa(linenum, buf); n = (int) strlen(buf); if (n < MIN_LINENUM_WIDTH) n = MIN_LINENUM_WIDTH; sprintf(linebuf+curr, "%*s ", n, buf); n++; /* One space after the line number. */ for (i = 0; i < n; i++) attr[curr+i] = AT_BOLD; curr += n; column += n; lmargin += n; }
填充量是
MIN_LINENUM_WIDTH
,在標頭檔中定義less.h
為 7,足以為少於一千萬行的文件保留數字對齊。如果您發現過多,您可以隨時更改並重新編譯。