Emacs: буфер прокрутки не указывает

Можно ли прокручивать всю видимую часть буфера в Emacs, но оставить точку там, где она есть. Пример: точка находится в нижней части окна, и я хочу увидеть текст, который прокручивается в верхней части окна без перемещения точки.

Изменить: я полагаю, что C-l C-l делает то, что я хотел.

Ответы

Ответ 1

попробуйте эти. Измените привязки клавиш M-n и M-p в соответствии с вашим вкусом

;;; scrollers
(global-set-key "\M-n" "\C-u1\C-v")
(global-set-key "\M-p" "\C-u1\M-v")

Ответ 2

Это может быть полезно. Согласно странице EmacsWiki по прокрутке;

Переменная scroll-preserve-screen-position может быть полезна для некоторых. Когда вы прокручиваете вниз и снова вверх, точка должна заканчиваться той же позицией, с которой вы начали. Значение может быть переключено встроенным режимом Mx scroll-lock-mode.

Ответ 3

;;;_*======================================================================
;;;_* 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)

Ответ 4

Я думаю, что это лучше:

(defun gcm-scroll-down ()
      (interactive)
      (scroll-up 1))
    (defun gcm-scroll-up ()
      (interactive)
      (scroll-down 1))
    (global-set-key [(control down)] 'gcm-scroll-down)
    (global-set-key [(control up)]   'gcm-scroll-up)

ссылка: emacs wiki

Ответ 5

;; Preserve the cursor position relative to the screen when scrolling
(setq scroll-preserve-screen-position 'always)

;; Scroll buffer under the point
;; 'scroll-preserve-screen-position' must be set to a non-nil, non-t value for
;; these to work as intended.
(global-set-key (kbd "M-p") #'scroll-down-line)
(global-set-key (kbd "M-n") #'scroll-up-line)