更改默认的EMACS鼠标突出显示行为

时间:2016-03-30 21:01:07

标签: emacs

在EMACS中,默认似乎是复制'任何用鼠标突出显示的文字。我试图复制现代文本编辑器的功能,我可以在其中突出显示一段文字,然后按“粘贴”#39;替换它。我到目前为止已添加

  

(删除选择模式1)

到我的init.el

问题是,如果我复制一些东西,然后突出显示粘贴到它的位置,我最后粘贴我刚刚突出显示的内容,不做任何改动。

我需要更改什么来修复该行为?

3 个答案:

答案 0 :(得分:3)

emacs最强大的元素是它的内省功能,让我们看看我们如何使用它们来尝试解决这个问题。我们必须利用来源的力量。

在emacs中进行内省的最重要工具之一是绑定到describe-key的{​​{1}}命令。它会显示随后调用的任何按键的文档。因此,在我们的情况下,如果我们按C-h k然后点击并拖动,我们会看到C-h k的文档,更重要的是<down-mouse-1>的文档。该文档指出该位置的“<drag-mouse-1>运行命令<drag-mouse-1>”。然后在它下面给出了这个命令的一些文档。它说

  

将区域设置为拖过的文本,然后复制到kill ring。   这应该绑定到鼠标拖动事件。   请参阅'mouse-drag-copy-region'变量来控制是否这样   命令是否改变了杀戮戒指。

现在我们知道mouse-set-region以某种方式控制是否复制突出显示的文本。

如果我们按照该变量的链接告诉我们默认值和一些文档:

  

如果非零,则在鼠标调整区域时复制到杀死环。

现在我们要做的就是将变量设置为nil以获得所需的效果。将以下代码放在init文件的末尾,您应该全部设置

mouse-drag-copy-region

我希望这可以帮助您解决这个问题,更重要的是它可以帮助您解决更多问题。

答案 1 :(得分:1)

默认情况下,使用鼠标选择区域不会将文本复制到kill ring。如果您的Emacs执行此操作,您可能已设置变量mouse-drag-copy-region

在新的Emacs(24.5开始使用-Q)中,您可以执行以下操作:

  • 开始delete-selection-mode
  • 使用鼠标标记区域。使用M-w复制它。
  • 标记第二个区域。使用C-y替换第一个。{/ li>

答案 2 :(得分:0)

我看到两种选择,它们都没有完全符合您的要求。 (对于两者,是的,打开delete-selection-mode。)

  • 使用secondary selection复制文本,并使用主要选择(区域)替换文本。

    使用Meta键和鼠标将文本复制到辅助选择中 - 例如,在拖动或双击mouse-1的同时按住Meta(通常为Alt键)。

    使用Meta + mouse-2粘贴辅助选择。

  • 使用鼠标选择文字,然后使用kill-ring将其复制到M-w。然后选择要用鼠标替换的文本,并使用C-y粘贴复制的文本以替换它。