简单地说,我试图让emacs的滚动像vim和其他大多数编辑器;当我例如,从底部/顶部两行,我按下向下/向上(CTRL-P,N,↑,↓)它会只有一条线向上或向下,而不是半个屏幕。
看到一些对EmacsWIki的建议:
(setq scroll-step 1 scroll-conservatively 10000)
有“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-起来,M-下来,因为它与组织模式,其超载这些命令干扰。为了避免这个问题,我个人使用那些结合M-向上翻页M-页面下的命令。”在这里,我所定义的上下滚动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))))
如果你正在寻找一个快速的方法来创建一个滚动般的效果,在C-n
和C-l
顺序光标向下移动进入,然后它中心。
如果您在.xsession的启动Emacs,在我的情况设置滚动保守到100+将无法正常工作,也没有滚动步骤1中,但如果u X之后启动Emacs,它的工作原理。
如果你想在屏幕上准确定位,您可以使用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文件。
Here的宏定义解释
Here如何控制滚动
我一直在使用这些在我.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)))
Simples做到这一点:
(global-set-key [M-up] (lambda () (interactive) (scroll-up 1)))
(global-set-key [M-down] (lambda () (interactive) (scroll-down 1)))
那么元光标向上移动和meta光标向下移动了。
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)
M-x customize-variable scroll-conservatively
将其设置为1。
你不是真的想这样做,虽然。