|

楼主 |
发表于 2010-8-31 17:41:12
|
显示全部楼层
我突然想到了一件事! 你是不是alias了 less = less -R ? 我把"|less" 改成 "|less -R" 后,就一切正常了.
现在就剩下一个遗憾了.less原本的方式会造成一大块空白,但是并不是简单的"\t",而是连同行号在内,占据一段固定长度. 刚刚我在源码中也找到了关于这个的地方. 在 line.c里面,原文是- 211 if (linenums == OPT_ONPLUS)
- 212 {
- 213 char buf[INT_STRLEN_BOUND(pos) + 2];
- 214 int n;
- 215
- 216 linenumtoa(linenum, buf);
- 217 n = strlen(buf);
- 218 if (n < MIN_LINENUM_WIDTH)
- 219 n = MIN_LINENUM_WIDTH;
- 220 sprintf(linebuf+curr, "%*s ",n, buf);
- 221 n++; /* One space after the line number. */
- 222 for (i = 0; i < n; i++)
- 223 attr[curr+i] = AT_NORMAL;
- 224 curr += n;
- 225 column += n;
- 226 lmargin += n;
- 227 }
复制代码
通过一个"sprintf"来打印.我原本的打算就是让行号在最前面显示,而不要留大块空白然后再行号,搞的行号跟正文贴太紧.所以我改成了" sprintf(linebuf+curr, "%-*s ",n, buf);",让它进行左对齐.这样效果倒也不错. 只是又没了颜色..... |
|