如何在Emacs中保存光标初始位置,执行代码后恢复原位置?
解决Emacs函数中保存并恢复光标位置的问题
直接用point函数就能获取当前光标所在的缓冲区字符位置,不需要从what-cursor-position里提取信息——后者主要用于在minibuffer显示光标相关信息,并非返回位置值。
修改你的代码为:
(setq my_cursor_position (point)) (do-some-stuff) (goto-char my_cursor_position)
point会返回一个整数,对应光标当前的字符位置,正好是goto-char所需的参数,这样就能动态保存光标位置,执行完操作后精准恢复。
如果你的需求只是在执行一段代码后自动恢复光标位置和窗口视图,更推荐用save-excursion宏,它会自动处理保存与恢复,代码更简洁:
(save-excursion (do-some-stuff))
这段代码执行完do-some-stuff后,光标会自动回到执行前的位置,窗口滚动状态也会恢复。
内容的提问来源于stack exchange,提问作者Nobody-86
相关产品推荐
相关产品推荐

