让less行号左对齐

用vim习惯于显示行号,用less也想要显示行号.没行号找东西太麻烦了.开始连能不能显示行号都不知道.看了man手册,发现可以用 -N ,只是在打开大文件的时候会略微拖慢点速度. 拖慢点就拖慢点了,无所谓. 于是设置了 "alias less=less -N". 然后又发现一个问题.这行号显示得也太别扭了.前面空了老大一块空白,后面跟个行号,然后一个空格之后就是正文了,很容易搞混.我于是想把行号分开点,如果能彩色那更好了.

查遍了man,除了看到个没效果的 -R 之外,没看到什么关于颜色的东西. 上网查了下, -R 是用来支持解析ANSI颜色代码的,而不是less自己能用颜色.至于对齐之类的,我都不知道怎么查......

于是就想着反正开源嘛,改源码吧. 从GNU上下载了最新的less,2008年产的418版.机器上原来用的是394版,略微升级了.解压后,看到好大一堆文件.然后开始找.都不知道关于打印行号的这段在哪个文件的哪个部分.在Linuxsir上也发帖问了,不过还没人给出答案. 好在看了数个文件后,机缘巧合之下,让我翻到了 line.c 这个文件.没翻几行,就找到了关键的地方.它的关键部分是这样写的:

 1 if (linenums == OPT_ONPLUS)
 2         {
 3                 char buf[INT_STRLEN_BOUND(pos) + 2];
 4                 int n;
 5
 6                 linenumtoa(linenum, buf);
 7                 n = strlen(buf);
 8                 if (n < MIN_LINENUM_WIDTH)
 9                         n = MIN_LINENUM_WIDTH;
10                 sprintf(linebuf+curr, "%*s ",n, buf);
11                 n++;  /* One space after the line number. */
12                 for (i = 0; i < n; i++)
13                         attr[curr+i] = AT_NORMAL;
14                 curr += n;
15                 column += n;
16                 lmargin += n;
17         }

要点在"sprintf(linebuf+curr, "%*s ",n, buf);"这一句.这句打印出了行号,并给不足最小长度MIN_LINENUM_WIDTH的地方填上了空白.如果我要单纯地去除这些空白,只需要把前面的"n = MIN_LINENUM_WIDTH" 这一整个条件判断去掉,然后改成"sprintf(linebuf+curr, "%s " buf);". 只是这样一来,在行号从一位变成两位,从两位变成三位等类似的时候,正文整体都会偏移一个字符,看上去很不美观.所以还是需要保留那些空白,最多把MIN_LINENUM_WIDTH改小一点.然而靠右对齐实在不可忍耐.所以我最后改成了"sprintf(linebuf+curr, "%-*s ",n, buf);" 在前面加一个"-",使之左对齐.

让less行号左对齐

时间: 2024-10-09 19:36:20

让less行号左对齐的相关文章

css实现一行文字居中,多行文字左对齐

问题及场景: 当内容能一行显示在盒子内时,文字居中对齐. 当内容过多换行后显示在盒子内时,文字左对齐. 其实这种视觉上的需求还是蛮常见的.比如用于弹出提示框,当提示内容比较少时,内容居中显示在弹出框,提示内容比较多时,内容居左对齐.但是其纯CSS实现有点麻烦,一般就放掉这个需求,或者,使用JS实现. 解决方案: 效果如下 CSS实现代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta chars

eclipse 括号对齐行号显示及字体调整

作者 : 卿笃军 一.括号对齐:指和C/C++里面一样,上下括号对齐~~~ 第一步:Project->preferences->Java->Code Style->Formatter 第二步:点击右边的New在profile name 里面随便填写一个名字,点击ok 选择标签页Braces 把所有的Same line 统统(除了最后一个Array initializer)改成Next line 保存即可 二.显示行号: 直接右击编辑框你想显示行号的位置,勾选"显示行号&q

eclipse 对齐行号在括号中显示和字体调整

笔者 : 本笃庆军 一.括号对齐:指和C/C++里面一样.上下括号对齐~~~ 第一步:Project->preferences->Java->Code Style->Formatter 第二步:点击右边的New在profile name 里面随便填写一个名字.点击ok 选择标签页Braces 把全部的Same line 统统(除了最后一个Array initializer)改成Next line 保存就可以 二.显示行号: 直接右击编辑框你想显示行号的位置.勾选"显示行号

弹性盒模型:flex多行多列两端对齐,列不满左对齐

[1]需求: [2]解决方案: 最近遇到布局上要求item两端对齐,且最后一行在列不满的情况下要求左对齐,使用flex的justify-content: space-between;实现时发现最后一行不能左对齐,而是两端对齐方式. 不是项目上想要的效果 # 网上查了一些资料,有两种方法可以实现效果:**1.添加几个空item**(对我来说最有效的,适用于大多数场景)    根据布局列数添加空item,比如每行最大n列,那么在最后添加n-2个空item即可 <html> <style>

ios uilable折行后文字怎么都是左对齐

typedef NS_ENUM(NSInteger, NSLineBreakMode) {        /* What to do with long lines */ NSLineBreakByWordWrapping = 0,         /* Wrap at word boundaries, default */ NSLineBreakByCharWrapping,        /* Wrap at character boundaries */ NSLineBreakByClip

word2010 数学公式/联立方程/大括号内方程组如何左对齐?

如何在word中输入的联立方程使其条件左对齐? 如输入: 实现如下对齐: 就是在每个逗号 .前输入一个 & 号就可以了, 注意这个逗号一定要是 位于这个方框里头,然后在其前面输入 & 才会有效对齐! 可以看到上面的那个无穷大是和其其它公式右对齐的, 要实现 逗号前面的公式居中对齐,逗号后面的条件左对齐怎么做呢? 这个我暂时没有想到,只是在无穷大右边输入空格来实现这个居中对齐,有知道的朋友麻烦告诉一声,如何实现:逗号前面的公式居中对齐,逗号后面的条件左对齐 -----------------

mac/linux中vim永远显示行号、开启语法高亮

步骤1: cp /usr/share/vim/vimrc ~/.vimrc 先复制一份vim配置模板到个人目录下 步骤2: vi ~/.vimrc 进入insert模式,在最后加二行 syntax on set nu! 保存收工. 最后附上其它选项(从网上淘来的) set nocompatible                 "去掉有关vi一致性模式,避免以前版本的bug和局限 set nu!                                    "显示行号 set

vim显示行号、语法高亮、自动缩进的设置

在UBUNTU中vim的配置文件存放在/etc/vim目录中,配置文件名为vimrc 在Fedora中vim的配置文件存放在/etc目录中,配置文件名为vimrc 在Red Hat Linux 中vim的配置文件存放在/etc目录中,配置文件名为vimrc set nocompatible                 "去掉有关vi一致性模式,避免以前版本的bug和局限     set nu!                                    "显示行号 set

Linux-vimrc(vim显示行号、语法高亮、自动缩进的设置 )

在UBUNTU中vim的配置文件存放在/etc/vim目录中,配置文件名为vimrc 在Fedora中vim的配置文件存放在/etc目录中,配置文件名为vimrc 在Red Hat Linux 中vim的配置文件存放在/etc目录中,配置文件名为vimrc set nocompatible                 "去掉有关vi一致性模式,避免以前版本的bug和局限 set nu!                                    "显示行号 set gui