如何在emacs中调用最后选择的区域?

6
当我在emacs中按下“撤销”时,它会撤销我的编辑,但我失去了选定的区域,我必须返回并重新选择它。是否有一种方法可以绑定撤销,使其选择最后一个选定的区域?
我想到的最好的方式是:
(global-set-key (kbd "\C-o")
                (lambda()
                  (interactive)
                  (progn (undo)
                          (exchange-point-and-mark)
                          )))
2个回答

34

您不会失去选区。该区域仍然保存在 yank-ring 中。

如果您想重新选择它,只需调用 exchange-point-and-mark 命令,该命令默认绑定到 C-xC-x


这应该是正确的答案。 - geckos

1
你总是可以使用建议将你拥有的东西包装在撤销周围:
(defadvice undo (around reactivate-mark (&optional arg) activate)
  (let ((ma mark-active))
    ad-do-it
    ;; Reactiveate mark if it was active
    (when ma
      (exchange-point-and-mark))))

2
你应该在这个建议中插入一个全局测试变量,比如'undo-remark-region-p'(或者一个钩子调用),因为这个建议会全局扩展函数,在某些模式下可能不希望出现这种行为等。我认为最好将这种行为设置为可选的。 - alinsoar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接