如果您切换-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
),但我想知道是否有某种我不知道的开关或配置参数控制这种行为。
答案1
更新
该功能已立即添加到 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,足以保留少于 1000 万行的文件的数字对齐。如果您发现过多,您可以随时更改它并重新编译。