简单来说,我试图像在vim和大多数其他编辑器中一样滚动emacs; 当我为例子,从底部/顶部两行,我按向下/向上(Ctrl- ,p,n,↑)↓它会只有一条线向上或向下,而不是半个屏幕.
查看有关EmacsWIki的一些建议:
http://www.emacswiki.org/emacs/SmoothScrolling
(setq scroll-step 1 scroll-conservatively 10000)
如果要准确定位屏幕,可以使用Ctrl-L.
默认情况下,它将当前行定位在屏幕中间.
ESC 0 Ctrl-L将当前行定位在顶部.
我有点迟到了,但是如果你不介意安装一个软件包那么平滑滚动(github,也可以在MELPA中找到)可能就是你想要的 - 它肯定对我有用.
安装完成后,可以在init.el中弹出以下内容:
(require 'smooth-scrolling) (smooth-scrolling-mode 1) (setq smooth-scroll-margin 5)
最后一行是可选的; 它开始在屏幕边缘附近而不是在屏幕边缘滚动,所以你总是在这个点附近有一点背景.调整味道.
我的解决方案不是改变Emac的默认滚动,而是从宏创建一个键序列命令.这样,您可以方便地一次滚动一行.不理想,但超级简单.只是碰巧M-(↓)和M-(↑)可用,所以这就是我使用的.
这就是我做到的.首先,您需要为一行滚动,上下滚动记录一个宏.
开始宏
C-x (
向下滚动一个
C-u 1 C-v
停止宏
C-x )
如需向上滚动,请使用
C-u 1 M-v
接下来,您需要命名宏.
M-x name-last-kbd-macro
在提示时给它命名,如:
down-one-line
然后使用以下命令将键序列绑定到该命令名称:
M-x global-set-key
并在提示时使用以下内容:
M-(down arrow)
然后它会询问您要绑定哪个命令,并且应该为它提供您之前发明的名称,例如,向下一行.
这是我获取此信息的地方.您还可以在下面和其他地方找到有关将宏添加到.emacs文件的说明.
这里是宏定义解释
这里是如何控制滚动
.emacs
自2000年以来,我一直在使用这些文件.
(global-set-key (quote [M-down]) (quote View-scroll-line-forward)) (global-set-key (quote [M-up]) (quote View-scroll-line-backward))
这样,我可以保持Emacs的默认行为,也可以一次滚动一行,具体取决于我正在做什么.
这至少工作到GNU Emacs 22.我最近升级到Emacs 24并发现View-scroll-line-forward
并且View-scroll-line-backward
不再可用.经过一番狩猎,我发现了向上滚动和向下滚动的工作.因此,如果您使用的是Emacs 24,则可以使用它.
(global-set-key (quote [M-down]) (quote scroll-up-line)) (global-set-key (quote [M-up]) (quote scroll-down-line))
我大多跳过Emacs 23,所以如果你使用的是版本,你可以尝试以上两种方法.
注意:scroll-up-line
实际上向下滚动一行,因为缓冲区正在向上移动一行.
我重新绑定我的箭头键来执行滚动操作.
(global-set-key [up] (lambda () (interactive) (scroll-down 1))) (global-set-key [down] (lambda () (interactive) (scroll-up 1))) (global-set-key [left] (lambda () (interactive) (scroll-right tab-width t))) (global-set-key [right] (lambda () (interactive) (scroll-left tab-width t)))
简单做到这一点:
(global-set-key [M-up] (lambda () (interactive) (scroll-up 1))) (global-set-key [M-down] (lambda () (interactive) (scroll-down 1)))
然后元光标向上移动,元光标向下移动.
QED.不确定以上所有人都吸烟了!
我的.emacs文件中包含以下内容,以实现良好的ctrl向上,ctrl向下滚动行为。我也将其用于鼠标滚轮。
(defun scroll-down-in-place (n) (interactive "p") (previous-line n) (scroll-down n)) (defun scroll-up-in-place (n) (interactive "p") (next-line n) (scroll-up n)) (global-set-key [mouse-4] 'scroll-down-in-place) (global-set-key [mouse-5] 'scroll-up-in-place) (global-set-key [C-up] 'scroll-down-in-place) (global-set-key [C-down] 'scroll-up-in-place)