正如主题标题所说,有人对如何在 emacs 中实现文本显示的平滑滚动有什么建议吗?
Emacs wiki 上建议的各种方法似乎只适用于 Linux。我使用的是 EmacsW32,但我也用标准 Emacs 发行版进行了测试,但没有结果。
作为长期的 Vim 用户,我非常惊讶 Emacs 无法自行流畅滚动。
答案1
作为一名长期的 emacs 用户,我很少想到使用鼠标滚轮进行滚动……然而,其他人却这么做了。有一个页面平滑滚动在 emacs wiki 上。
更新:我在NextLineBehavior页面:“更改scroll-conservatively
为 1 或其他适当小的数字,而不是零。”
答案2
在我的搜索中我发现了这一点:
(setq default-truncate-lines t)
(defun point-of-beginning-of-bottom-line ()
(save-excursion
(move-to-window-line -1)
(point)))
(defun point-of-beginning-of-line ()
(save-excursion
(beginning-of-line)
(point)))
(defun next-one-line () (interactive)
(if (= (point-of-beginning-of-bottom-line) (point-of-beginning-of-line))
(progn (scroll-up 1)
(next-line 1))
(next-line 1)))
(defun point-of-beginning-of-top-line ()
(save-excursion
(move-to-window-line 0)
(point)))
(defun previous-one-line () (interactive)
(if (= (point-of-beginning-of-top-line) (point-of-beginning-of-line))
(progn (scroll-down 1)
(previous-line 1))
(previous-line 1)))
(global-set-key (kbd "<down>") 'next-one-line)
(global-set-key (kbd "<up>") 'previous-one-line)
这对我在 aquamacs 和 mac os x 中很有用。也许对 WIN 也有用。
答案3
不完全确定你所说的平滑滚动是什么意思..但这是我使用的:
(global-set-key [(meta up)] '(lambda(amount) (interactive "p") (scroll-up amount)))
(global-set-key [(meta down)] '(lambda(amount) (interactive "p") (scroll-down amount)))
对我来说,使用常规 GNU win32 emacs 构建,这可以正常工作。
答案4
;;; scrollers
(global-set-key "\M-n" '"\C-u1\C-v")
(global-set-key "\M-p" '"\C-u1\M-v")
我用它来滚动。我记得我只是从 SO 复制了这个。