Emacs 如何将删除选择模式配置为仅删除?

Emacs 如何将删除选择模式配置为仅删除?,emacs,editing,Emacs,Editing,我在Windows上使用GNU Emacs 22.3.1 在我的Emacs中,我启用了删除选择模式,选择一个区域并删除或替换它非常有用。但我有一个缺点 当我在所选内容上写入或按DEL键时,Emacs不仅会删除文本,还会终止a.k.a.发送到剪贴板*。这对我来说很烦人,因为我无法控制我的杀人戒指a.k.a.剪贴板,可能会造成意想不到的效果 有一种方法,删除选择模式不会杀死文本,只是删除它?也许可以修改 *:我已经同步了kill ring和Windows剪贴板,因此出于实际目的,它是相同的 编辑[2

我在Windows上使用GNU Emacs 22.3.1

在我的Emacs中,我启用了删除选择模式,选择一个区域并删除或替换它非常有用。但我有一个缺点

当我在所选内容上写入或按DEL键时,Emacs不仅会删除文本,还会终止a.k.a.发送到剪贴板*。这对我来说很烦人,因为我无法控制我的杀人戒指a.k.a.剪贴板,可能会造成意想不到的效果

有一种方法,删除选择模式不会杀死文本,只是删除它?也许可以修改

*:我已经同步了kill ring和Windows剪贴板,因此出于实际目的,它是相同的

编辑[2009年6月24日] 谢谢,丹尼尔坡。即使有了特雷·杰克逊的想法,选择仍然是致命的。我找到了原因

我发现问题不在删除选择模式下。问题是,当我选择区域时,我是用鼠标选择的。从来没有想到是老鼠在复制文本。使用set mark命令和箭头键,文本最终不会被删除,只会被删除

我在.emacs中写入以下内容时禁用了此行为:

(require 'delsel)
(setq mouse-drag-copy-region nil)
(global-unset-key (kbd "<mouse-2>"))
(global-unset-key (kbd "<mouse-3>"))

谢谢你的建议。如果此禁用此鼠标行为的方法可能导致与其他选项冲突,请发表评论。

看起来您只需要修改源的一小部分,即进行以下更改:

(defun delete-active-region (&optional killp)
  (delete-region (point) (mark))
  t)
原始代码查看了参数killp,并用它来决定是否将区域添加到kill环中,您说您永远不希望这样。此更改将强制始终删除该区域


现在,您不需要实际修改源代码,只需将该函数定义放在.emacs中的require'delsel之后或删除选择模式之后。

您是否尝试过使用-Q启动emacs。如果我这样做,并且只启用M-x:delete选择模式,我无法重现您所描述的内容。什么都没有,只是删除了?!你能检查一下吗?

啊,好主意,我没想到这一点,而且我经常使用这一功能。你可以很快地复制“n”粘贴:但我能理解,这可能与一个人的工作习惯相冲突……将你的问题解决方案作为答案发布,然后接受它。这将阻止人们在回答悬而未决的问题时阅读这篇老文章。