現在の位置から数行だけスクロールしている場合、これを使用して、ポイントを移動せずにウィンドウをスクロールできます。
(defun scroll-in-place (scroll-up)
"Scroll window up (or down) without moving point (if possible).
SCROLL-Up is non-nil to scroll up one line, nil to scroll down."
(interactive)
(let ((pos (point))
(col (current-column))
(up-or-down (if scroll-up 1 -1)))
(scroll-up up-or-down)
(if (pos-visible-in-window-p pos)
(goto-char pos)
(if (or (eq last-command 'next-line)
(eq last-command 'previous-line))
(move-to-column temporary-goal-column)
(move-to-column col)
(setq temporary-goal-column col))
(setq this-command 'next-line))))
;;;; ------------------------------------------------------------------------
(defun scroll-up-in-place ()
"Scroll window up without moving point (if possible)."
(interactive)
(scroll-in-place t))
;;;; ------------------------------------------------------------------------
(defun scroll-down-in-place ()
"Scroll window up without moving point (if possible)."
(interactive)
(scroll-in-place nil))
(global-set-key (read-kbd-macro "M-<down>") 'scroll-up-in-place)
(global-set-key (read-kbd-macro "M-<up>") 'scroll-down-in-place)
ファイルのまったく別のセクション(またはまったく別のファイル)に移動する場合、breadcrumb
同様のことを行う他のパッケージがたくさんありますが、時々使用します。
コードの2つの領域を同時に視覚的に確認する必要がある場合は、フレームを水平に2つのウィンドウに分割し、完了したら2番目のウィンドウを破棄します。
ただし、ほとんどの場合、2つのフレームを使用します。1つは現在の作業フレームで、もう1つは参照ファイルで、同じファイルまたは他のファイルをジャンプするために使用します。