简单地说,我正试图像在vim和大多数其他编辑器中一样滚动emacs;例如,当我是从底部/顶部开始的两行时,我按下/向上( Ctrl - p , n ,< kbd>↑,↓)它只向上或向下一行,而不是屏幕的一半。
答案 0 :(得分:47)
如果要准确定位屏幕,可以使用Ctrl-L。
默认情况下,它会将当前行定位在屏幕中间。
ESC 0 Ctrl-L将当前行定位在顶部。
答案 1 :(得分:46)
查看有关EmacsWIki的一些建议:
(setq scroll-step 1 scroll-conservatively 10000)
答案 2 :(得分:37)
我参加派对有点晚了,但是如果你不介意安装一个软件包,那么平滑滚动(github,也可以在MELPA中找到)可能是你正在寻找的 - 它肯定适合我。
安装完成后,您可以在init.el中弹出以下内容:
(require 'smooth-scrolling)
(smooth-scrolling-mode 1)
(setq smooth-scroll-margin 5)
最后一行是可选的;它开始滚动靠近屏幕边缘而不是它,所以你总是得到一点关于这一点的背景。调整味道。
答案 3 :(得分:25)
我的解决方案不是改变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文件的说明。
Here用于宏定义解释
Here了解如何控制滚动
答案 4 :(得分:21)
自2000年以来,我一直在.emacs
文件中使用这些文件。
(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
实际上滚动了一行 down ,因为缓冲区正在向上移动一行。
答案 5 :(得分:13)
我重新绑定箭头键以执行滚动操作。
(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)))
答案 6 :(得分:11)
简单做到这一点:
(global-set-key [M-up] (lambda () (interactive) (scroll-up 1)))
(global-set-key [M-down] (lambda () (interactive) (scroll-down 1)))
然后元光标向上移动,元光标向下移动。
QED。不确定以上所有人都吸烟了!
答案 7 :(得分:4)
我在.emacs文件中有以下内容,以启用一个很好的ctrl-up,ctrl-down滚动行为。我也将它用于鼠标滚轮。
(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)
答案 8 :(得分:2)
M-x customize-variable scroll-conservatively
将其设为1.
但你真的不想这样做。
答案 9 :(得分:2)
要让“vim”滚动,请将其添加到.emacs文件中:
(defun next-line-and-recenter () (interactive) (next-line) (recenter))
(defun previous-line-and-recenter () (interactive) (previous-line) (recenter))
(global-set-key (kbd "C-n") 'next-line-and-recenter)
(global-set-key (kbd "C-p") 'previous-line-and-recenter)
答案 10 :(得分:2)
如果您正在寻找一种快速创建滚动效果的方法,请依次输入C-n
和C-l
,这会将光标向下移动,然后将其居中。
答案 11 :(得分:2)
因为使用 M-up , M-down 会很烦人,因为它会干扰重载这些命令的org-mode。为了避免这个问题,我个人使用那些组合 M-page-up M-page-down 的命令。这里我将向上和向下滚动定义为1行。 / p>
;;;scroll by `number-of-lines' without the cursor attached to the screen
(global-set-key [M-prior] (lambda () (interactive) (let ((number-of-lines 1))
(scroll-down number-of-lines)
(forward-line (- number-of-lines)))))
(global-set-key [M-next] (lambda () (interactive) (let ((number-of-lines 1))
(scroll-up number-of-lines)
(forward-line number-of-lines))))
;;;scroll by `number-of-lines' with the cursor attached to the screen
(global-set-key [S-M-prior] (lambda () (interactive) (let ((number-of-lines 1))
(scroll-down number-of-lines))))
(global-set-key [S-M-next] (lambda () (interactive) (let ((number-of-lines 1))
(scroll-up number-of-lines))))
答案 12 :(得分:0)
如果你在.xsession中启动emacs,在我的情况下设置滚动 - 保守地到100+将不起作用,也不会滚动步骤1.但是如果你在X之后启动emacs,它可以工作。
答案 13 :(得分:0)
如果您不介意使用鼠标并拥有滚轮,则可以通过以下任一方式自定义变量mouse-wheel-scroll-amount:
C-h v鼠标滚轮滚动量(单击自定义,将值更改为“特定行数” 1,ApplyAndSave。)
或在.emacs中添加以下行: '(鼠标滚轮滚动量'(1((shift)。1)((meta))((control).text-scale)))
以下列出了很多可能性 https://www.emacswiki.org/emacs/Scrolling
答案 14 :(得分:0)
在使用可用配置(emacs 26.3)之后,我得到了以下一组值:
(setq scroll-step 1
scroll-preserve-screen-position t
scroll-margin 10
scroll-conservatively 10
maximum-scroll-margin 0.0
scroll-up-aggressively 0.0
scroll-down-aggressively 0.0)
我相信 scroll-margin
和 scroll-conservatively
的值并不重要,因为 maximum-scroll-margin
会将它们压制。它们只需要相等(也许?)。
滚动逐行进行,即使在文件末尾(对我来说最坏的情况)。唯一缺少的功能是,顶部和底部的边距丢失了。
这是一种妥协,对我来说,平滑滚动是值得的。