是否可以让Emacs将光标移出屏幕,就像大多数GUI文本编辑器一样?当我在任何GUI编辑器上使用Emacs时,这是困扰我的最重要的事情之一。当我向下滚动时,光标在缓冲区的顶部“向前推”。
我以前认为这是完全不可能的,因为这很难连接到Emacs的架构中,但后来我看到了multiple-cursors,这对于辅助游标来说就是这样(假设你阻止了滚动功能)从代理二级游标)。是否可以使用多个游标将主光标放在一些隐藏缓冲区中,有效光标是我实际编辑的内容?或许还有其他一些巧妙的伎俩?或者也许我的谷歌搜索让我失望了,这真的已经没有任何魔力了吗?
答案 0 :(得分:6)
GNU ELPA上有一个名为scroll-restore
的新软件包试图解决此问题。到目前为止,我遇到了一些错误,但这个软件包似乎在大多数情况下都是广告宣传的。
您可以通过
安装来测试它M-x package-install RET scroll-restore RET
安装软件包后,您可以使用
启用次要模式M-x scroll-restore-mode
就我个人而言,我将它绑定到 Scroll Lock 键,因为它似乎非常适合!这就是我要添加到我的init文件中的内容:
(require 'scroll-restore)
(scroll-restore-mode 1)
;; Allow scroll-restore to modify the cursor face
(setq scroll-restore-handle-cursor t)
;; Make the cursor invisible while POINT is off-screen
(setq scroll-restore-cursor-type nil)
;; Jump back to the original cursor position after scrolling
(setq scroll-restore-jump-back t)
;; Toggle scroll-restore-mode with the Scroll Lock key
(global-set-key (kbd "<Scroll_Lock>") 'scroll-restore-mode)
这是此处发布的答案的直接副本:https://emacs.stackexchange.com/a/2273/93
答案 1 :(得分:2)
严格地说,你无法将光标移到屏幕外,因为底层的C代码不允许你这样做。
这就是说,我怀疑你的问题可以解决。基本上,有两个方面:
pre-command-hook
黑客攻击。答案 2 :(得分:2)
根据您的问题的上下文和描述来判断,您希望在保留编辑位置的同时浏览缓冲区。为此目的至少有两个技巧:标记/注册和在两个窗口中分割。
https://stackoverflow.com/a/3777598/308668描述了Emacs的寄存器,其作用类似于Vim的标记。您可以通过键入C-x r SPC a
(a
是您选择的字母)来检查文件中的位置,然后您可以随时返回C-x r j a
。
通过外部脚本(goto-last-change.el
)实现某种自动化,如下所述:https://superuser.com/a/184402/49046。
或者,使用C-x 2
将窗口拆分为两个。新拆分的窗口都显示相同的位置,您可以使用另一个窗口进行探索。完成后C-x 0
会关闭一个窗口。