简而言之,我试图像在vim和大多数其他编辑器中一样在emacs中滚动。当我为例子,从底部/顶部两行,我按向下/向上(Ctrl- ,p,n,↑)↓它会只有一条线向上或向下,而不是半个屏幕。
简而言之,我试图像在vim和大多数其他编辑器中一样在emacs中滚动。当我为例子,从底部/顶部两行,我按向下/向上(Ctrl- ,p,n,↑)↓它会只有一条线向上或向下,而不是半个屏幕。
z.
在vim中更频繁地使用以获得Emacs的感觉;-)可能不寻常,但是它实际上比逐行滚动IMHO更有用。
Answers:
scroll-conservatively
。对此的警告有些奇怪-如果它引起问题,那么很容易从init.el中删除该行!
如果要精确定位屏幕,可以使用Ctrl-L。
默认情况下,它将当前行放置在屏幕中间。
ESC 0 Ctrl-L将当前行置于顶部。
我的解决方案不是更改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)
要使“ 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)
由于使用可能会很烦人M-up,M-down因为它会干扰使这些命令过载的org-mode。为避免此问题,我个人使用了结合使用M-page-up M-page-down“。”的命令。在这里,我定义了上下滚动到1行。
;;;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))))
M-x customize-variable scroll-conservatively
设置为1。
不过,您实际上并不想要这样做。
如果您不介意使用鼠标并拥有滚轮,则可以通过以下两种方式自定义变量mouse-wheel-scroll-amount:
Ch v鼠标滚轮滚动量(单击定制,将值更改为“特定行数” 1,ApplyAndSave。)
或在.emacs中添加以下行:'(mouse-wheel-scroll-amount'(1((shift)。1)((meta))((control)。text-scale)))