如何为emacs -nw linum-mode添加填充?

27

我正在Ubuntu中使用Emacs -nw。我喜欢打开linum-mode来在左边的边距上看到行号,但是这些数字直接放在我的代码旁边。

如果行号和代码之间有一个1字符长的“padding”,那就太好了。抱歉,我不能发布图片,因为他们要求10个声望,而我没有:(

我该怎么做呢?

2个回答

67
你可以使用变量linum-format来实现这个功能。它的值可以是一个格式化字符串,也可以是一个以行号为参数的函数。emacswiki中有一些将其设置为格式化字符串的示例。
1)以下代码在行号后添加了一个空格。
(setq linum-format "%d ")

2) 你也可以添加一个实线分隔符

(setq linum-format "%4d \u2502 ")

我想以上内容已经足够满足您的需求了。您还可以在这里找到使用函数作为linum-format的示例。将适合您需求的任何格式添加到您的init文件中即可。


1
对我有用。非常感谢,兄弟! - Diaz
我安装了nlinum模式,因为显然它更有效率。这意味着上面的变量名变成了nlinum-format,但是我可以确认,在安装并添加第二个选项后,我现在拥有了最酷的行号显示 :) (setq nlinum-format "%4d \u2502 ") - Emacs The Viking
这是我最喜欢的答案,对我来说它很有效。唯一的问题是对于org模式,它可能会将几个数字放在同一行上。看起来像是一个小错误。 - Rostyslav Druzhchenko
我看不到实线分隔符。 - alper

16

除了本帖中的其他回答外,将行号与文本之间的距离拉开的选项包括但不限于调整 fringe 宽度(也可设置颜色)。

Fringe 就像一根从缓冲区顶部到底部的垂直标尺,左侧 fringe 处于行号和文本之间。如果它与用户默认背景颜色相同,则可以将其隐藏,或者它可以是不同的颜色。

(setq-default left-fringe-width  10)

(setq-default right-fringe-width  0)

(set-face-attribute 'fringe nil :background "black")

正是我在寻找的东西:) 在 X11 版本的emacs中,默认情况下会有 fringe,但在终端中不会。谢谢! - Diaz
很高兴能够帮助。如果您对答案感到满意,请打勾标记此线程已得到解答。 - lawlist
经过认真考虑,我决定标记上面的那个,因为它在这个之前,并且确实起到了作用。虽然我一开始是在寻找你的方法来做到这一点:) 再次感谢!我是stackoverflow的新手:) - Diaz
1
是否也可以添加一个实线分隔符呢?@lawlist - alper
@alper -- 从Emacs 26的介绍开始,Eli Z.编写了一个内置版本的行号,基本上淘汰了之前流行的Lisp版本。Lisp版本很容易修改,“是的”,可以放入像|符号这样的东西。内置版本可以修改,但需要从源代码构建修改后的版本。对于已弃用的Lisp版本,请参阅维基页面以获取如何修改格式的一些示例:https://www.emacswiki.org/emacs/LineNumbers - lawlist
@alper -- 如果你感觉大胆并想玩弄修改Emacs源代码并构建自己的版本,可以查看以下链接,其中包含一些想法:https://emacs.stackexchange.com/a/52271/2287 - lawlist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接