Emacs:滚动缓冲区不是点

Sab*_*lfy 20 emacs

是否可以在Emacs中滚动缓冲区的整个可见部分,但保留它所在的位置.示例:点朝向窗口底部,我想看到一些文本已经从窗口顶部滚动而没有移动点.

编辑:我想C-l C-l有点做我想要的.

kin*_*ero 11

尝试这些.根据您的口味更改M-nM-p键绑定

;;; scrollers
(global-set-key "\M-n" "\C-u1\C-v")
(global-set-key "\M-p" "\C-u1\M-v")
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,在点击窗口的顶部或底部之后,该点仍然会移动.我想知道这是否可以避免(没有重组Emacs本身)...... (9认同)
  • +1我使用类似的东西:`(global-set-key"\ Mn"(lambda()(交互式)(向上滚动)))`和`(global-set-key"\ Mp"(lambda() (互动)(向下滚动4)))`. (4认同)

Mar*_*nto 8

这可能是有用的.根据滚动的EmacsWiki页面;

该变量scroll-preserve-screen-position可能对某些人有用.当您向下滚动并向上滚动时,点应该在您开始时的相同位置结束.可以通过内置模式切换该值M-x scroll-lock-mode.


Chr*_*han 7

;;;_*======================================================================
;;;_* define a function to scroll with the cursor in place, moving the
;;;_* page instead
;; Navigation Functions
(defun scroll-down-in-place (n)
  (interactive "p")
  (previous-line n)
  (unless (eq (window-start) (point-min))
    (scroll-down n)))

(defun scroll-up-in-place (n)
  (interactive "p")
  (next-line n)
  (unless (eq (window-end) (point-max))
    (scroll-up n)))

(global-set-key "\M-n" 'scroll-up-in-place)
(global-set-key "\M-p" 'scroll-down-in-place)
Run Code Online (Sandbox Code Playgroud)

  • 因为`Mp` 和`Mn` 通常是为其他东西保留的,我将它们绑定到`CSy` 和`CSe`,因为它们与Vim 的`CTRL_e` 和`CTRL_y` 大致相同。 (2认同)