4

模式:我使用 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

我真的只想要相对模式的变化,但不介意它是否溢出到绝对模式。

对两者都有效的切换更改将是最有用的 - 这样,用户可以专门选择何时或使用哪种模式来关闭或打开它。

4

1 回答 1

4

如果目标是导航,我建议通过流行的ace-jump-mode.

如果目标只是持久的行编号,您可以考虑longlines-mode代替visual-line-mode(但我个人会避免这种情况)。

王牌跳跃@GitHub
https://github.com/winterTTr/ace-jump-mode

演示:
http ://dl.dropboxusercontent.com/u/3254819/AceJumpModeDemo/AceJumpDemo.htm

有了它,您只需按两次按键就可以跳转到任何一行。

除了行,你可以跳到任何单词的开头;还有个别字符级的跳跃精度。如果需要,可以将其配置为限制跳转到当前窗口/缓冲区,或跨当前帧中的所有窗口,甚至是多帧。

但是,它不会将换行识别为可跳转位置。同样,如果它对您来说真的很重要,您可能会考虑longlines-mode作为解决方案,但据我所知,它被认为是 hack'ish 并且不推荐使用. 但是,在第一个示例中,这些行将完全按照您的需要重新编号。visual-line-modelonglines-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))))
于 2013-07-05T17:16:43.297 回答