有沒有辦法Emacs
在我滾動時停止自動移動文字遊標位置(又名點)?我總是因為這種惱人的行為而失去我的位置和標記。
我測試了以下建議,但沒有成功:
(setq scroll-preserve-screen-position t
scroll-conservatively 0)
Emacs
(我在 Ubuntu 和 OS X 上運行24.2。)
答案1
我認為您希望遊標(點)和可見區域的行為應該像notepad
、gedit
、其他現代編輯器中一樣:能夠獨立於點位置更改可見區域,並在移動點後立即將可見區域返回到點位置。但emacs
有另一個概念:可見區域總是跟隨點位置,反之亦然。
也可以看看https://stackoverflow.com/questions/9616623/ctrl-up-down-style-scrolling-in-emacs
前面的答案顯示了特殊的習慣用法:如果您想將可見區域(與點一起)移動到遠離當前位置,然後將點返回到之前的位置,您應該養成使用mark-ring
.總有一種方法可以到達mark ring
當前工作位置:許多命令,例如isearch-forward
、beginning-of-buffer
,ace-jump-mode
會自動保存先前的位置,mark ring
並且您不應該使用C-<SPC> C-<SPC>
之前的位置,而只能C-u C-<SPC>
用於跳回。預設情況下,滾動命令(例如scroll-up
或mwheel-scroll
)不會自動保存先前位置,因為它可能會產生太多過多的標記。
您可以在少數地方使用指令clone-indirect-buffer
或view-buffer-other-window
使用緩衝區進行獨立工作。並使用指令recenter-top-bottom
(C-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)
)