模式:我使用linum作为行号,相对于相对行号使用linum-relative包。如果重要,我也使用视线模式。这些都很灵活。
目前,单行(即没有换行的文本)仅被编号为一行,无论其被包裹多少次。我想知道是否有办法改变编号以尊重这些包装。所以,例如,
263 This is all in
a single line
without newlines
可能会成为:
263 This is all in
264 a single line
265 without newlines
,以相对模式:
0 This is all in
a single line
without newlines
可能会成为:
-1 This is all in
0 a single line
1 without newlines
我真的只想要改变相对模式,但不介意它是否会溢出到绝对模式。
对两者都有效的切换更改将非常有用 - 这样,用户可以专门选择何时或使用哪种模式将其关闭或打开。
答案 0 :(得分:4)
如果目标是导航,我建议通过流行的ace-jump-mode
提供类似的解决方案。
如果目标只是持久性行号,您可以考虑longlines-mode
而不是visual-line-mode
(但我个人会避免这种情况)。
ace-jump @ GitHub
https://github.com/winterTTr/ace-jump-mode
演示:
http://dl.dropboxusercontent.com/u/3254819/AceJumpModeDemo/AceJumpDemo.htm
有了它,你可以用两个按键跳到任何一行。
除了线条,你可以跳到任何单词的开头;还有单独的字符级跳转精度。如果需要,它可以配置为限制跳转到当前窗口/缓冲区,或当前帧中的所有窗口,甚至是多帧。
但是,它不会将包裹线识别为可跳转位置。同样,可能会认为longlines-mode
是对此的修复,如果真的对您很重要,但据我所知,它被认为是hack'ish并且已经弃用了赞成visual-line-mode
。但是,使用longlines-mode
时,行会在第一个示例中完全按照您的要求重新编号。
我假设目标是导航,因此,我认为只需要一点点练习即可找到基于单词的跳跃,甚至通过增量搜索跳跃成为一种出色的解决方案。
这是一个简单的解决方案,使用emacs缩小功能来欺骗ace-jump在N行内扫描;也许其他人可以改进它。您也可以为单词和行模式执行类似的操作。
(defun brian-ace-jump-to-char-within-N-lines (&optional n)
(interactive "p")
(let* ((N (or n 0))
(query-char (read-char "Query Char:"))
(start (save-excursion
(forward-line (- N))
(point)))
(stop (save-excursion
(forward-line (1+ N))
(point))))
(unwind-protect
(condition-case err
(progn
(narrow-to-region start stop)
(ace-jump-char-mode query-char))
(error
(message (error-message-string err))))
(widen))))