如何配置.emacs以使“C-v”移动光标半窗口高度

时间:2012-11-07 16:55:24

标签: emacs lisp

我正试图让C-v绑定到一个函数,它将光标移动窗口高度的一半,对此有任何帮助吗?

3 个答案:

答案 0 :(得分:2)

来自http://www.emacswiki.org/emacs/HalfScrolling

  

默认情况下,Emacs通过向上滚动和向下滚动滚动几乎全屏幕。我个人希望一次滚动半页,但遗憾的是无法弄清楚如何干净利落地进行。

     

有一个next-screen-context-lines变量,它控制在屏幕滚动时应保留多少条连续线。手头的问题可以通过将此变量设置为window-height / 2来解决,但显然每次使用下一个屏幕上下文行时都应该计算它,因为窗口高度不是常数。

     

我想出的唯一可行的解​​决方案就是以下的sucky hack。它仍然比没有好,所以它来了:

(defun window-half-height ()
  (max 1 (/ (1- (window-height (selected-window))) 2)))

(defun scroll-up-half ()
  (interactive)
  (scroll-up (window-half-height)))

(defun scroll-down-half ()         
  (interactive)                    
  (scroll-down (window-half-height)))

(global-set-key [next] 'scroll-up-half)
(global-set-key [prior] 'scroll-down-half)

您应该能够将global-set-key更改为使用"\C-v"并获得您想要的内容。 针对同一问题的一些其他解决方案在该页面上,请查看。

答案 1 :(得分:2)

我发现最简单的方法:使用View.el,默认情况下应该可用(至少对我来说)。暗示:http://www.emacswiki.org/emacs/HalfScrolling

然后,执行一些键绑定以更改默认行为。我的Emacs init文件现在包含:

;; Scroll only half-pages.
(require 'view)
(global-set-key "\C-v"   'View-scroll-half-page-forward)
(global-set-key "\M-v"   'View-scroll-half-page-backward)

答案 2 :(得分:1)

如果这就是你想要做的,那就可以了:

(global-set-key [(control ?v)]
 (lambda () (interactive (next-line (/ (window-height (selected-window)) 2)))))