在 Emacs 中滾動時不要更改遊標位置

在 Emacs 中滾動時不要更改遊標位置

有沒有辦法Emacs在我滾動時停止自動移動文字遊標位置(又名點)?我總是因為這種惱人的行為而失去我的位置和標記。

我測試了以下建議,但沒有成功:

(setq scroll-preserve-screen-position t
scroll-conservatively 0)

Emacs(我在 Ubuntu 和 OS X 上運行24.2。)

答案1

我認為您希望遊標(點)和可見區域的行為應該像notepadgedit、其他現代編輯器中一樣:能夠獨立於點位置更改可見區域,並在移動點後立即將可見區域返回到點位置。但emacs有另一個概念:可見區域總是跟隨點位置,反之亦然。

也可以看看https://stackoverflow.com/questions/9616623/ctrl-up-down-style-scrolling-in-emacs

前面的答案顯示了特殊的習慣用法:如果您想將可見區域(與點一起)移動到遠離當前位置,然後將點返回到之前的位置,您應該養成使用mark-ring.總有一種方法可以到達mark ring當前工作位置:許多命令,例如isearch-forwardbeginning-of-bufferace-jump-mode會自動保存先前的位置,mark ring並且您不應該使用C-<SPC> C-<SPC>之前的位置,而只能C-u C-<SPC>用於跳回。預設情況下,滾動命令(例如scroll-upmwheel-scroll)不會自動保存先前位置,因為它可能會產生太多過多的標記。

您可以在少數地方使用指令clone-indirect-bufferview-buffer-other-window使用緩衝區進行獨立工作。並使用指令recenter-top-bottomC-l)連續將點保持在可見區域的中心。

答案2

我不知道是否有辦法阻止 emacs 在滾動時移動你的點。但如果您想保存您的位置以便稍後返回,您可以使用標記環

也就是說,鍵入C-<SPC> C-<SPC>將目前點位置推到標記環上,然後鍵入C-u C-<SPC>將點設定到標記環中的先前位置。

答案3

我用這個:

;;; scrollers - M-f, M-b
(global-set-key "\M-f" "\C-u1\C-v")
(global-set-key "\M-b" "\C-u1\M-v")

答案4

以下對我有用:

(custom-set-variables
 '(scroll-conservatively 1000)
 '(scroll-margin 3)
 )

相關內容