Emacs 中如何让翻页更加平滑

以下代码我自己也不经常使用。我觉得 emacs 默认的翻页机制也没有什么不好

我刚刚接触 Emacs 的时候,觉得他翻页的搞得光标跳来 跳去,也就是说,page down , page up 之后,光标不再 原来的位置。很不舒服。

pager.el 就解决了这个问题。可以在 google pager.el download 一个版本。

但是这个package 还没有解决一个问题,就是当光标在最 后一行的时候,如果再 C-n or <DOWN> or M-x next-line , 那么,光标就会蹦到屏幕中间,相当于翻 了半页,很不舒服。

用下面的代码解决了问题。

(defadvice next-line (before wcy-next-line (arg))
  (let ((pos
         (save-excursion
           (forward-line arg)
           (point))))
    (if (not (pos-visible-in-window-p pos))
        (scroll-up 1))))
(ad-activate 'next-line)

(defadvice previous-line (before wcy-previous-line (arg))
  (let ((pos
         (save-excursion
           (forward-line (* -1 arg))
           (point))))
    (if (not (pos-visible-in-window-p pos))
        (scroll-down 1))))
(ad-activate 'previous-line)