在EMACS中,默认似乎是复制'任何用鼠标突出显示的文字。我试图复制现代文本编辑器的功能,我可以在其中突出显示一段文字,然后按“粘贴”#39;替换它。我到目前为止已添加
(删除选择模式1)
到我的init.el
问题是,如果我复制一些东西,然后突出显示粘贴到它的位置,我最后粘贴我刚刚突出显示的内容,不做任何改动。
我需要更改什么来修复该行为?
答案 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
粘贴复制的文本以替换它。