【发布时间】:2011-10-16 00:20:39
【问题描述】:
有谁知道如果 emacs 存在类似 Vim Relative Line Numbers 的东西怎么办?我使用 vimpulse,伙计,这将非常方便!我知道一些口齿不清,所以如果它不知道,我可以尝试制作自己的,如果我能指出正确的方向。
更新: 感谢正确的响应,我想出了这个,它将显示 1 表示当前行,而 -1 表示上一行,用于结合 vimpulse yanks 和 deletes。
非常感谢所有提供帮助的人!我知道这不是 Vim 所做的,但是 vim 中从零开始的相对行号有什么好处?愚蠢的vim。
(defvar my-linum-current-line-number 0)
(setq linum-format 'my-linum-relative-line-numbers)
(defun my-linum-relative-line-numbers (line-number)
(let ((test2 (1+ (- line-number my-linum-current-line-number))))
(propertize
(number-to-string (cond ((<= test2 0) (1- test2))
((> test2 0) test2)))
'face 'linum)))
(defadvice linum-update (around my-linum-update)
(let ((my-linum-current-line-number (line-number-at-pos)))
ad-do-it))
(ad-activate 'linum-update)
【问题讨论】:
-
正如史蒂夫所说,他在 Emacs 中使用 vimpulse。 emacswiki.org/emacs/Vimpulse
-
@phils - 啊,谢谢,错过了这篇文章。
-
Steve,我冒昧地更新了您的版本并修复了错误,以便为 linum-format 函数输出使用正确的面。
-
BTW:关于这样一个“相对行号”功能,当缓冲区显示在多个窗口中时它应该如何表现:“其他窗口”应该显示相对于它们各自点的行号,还是当前选定窗口中的点(如果是,如果缓冲区的窗口都不是选定的窗口,会发生什么情况)?
标签: emacs line-numbers vimpulse