如何在Emacs的Evil-Mode中复制文本而不覆盖剪贴板?

9

本篇文章介绍了如何在Vim中执行此操作,其中一个前缀为" + <register name>(例如k)的复制命令。在Emacs Evil-Mode中如何执行此操作?

例如,我尝试了以下操作:

  • yy - 将第一行复制到剪贴板
  • jjj - 移动到某个新行
  • "kyy - 将第二行复制到寄存器k
  • 移动到我的新区域
  • p - 粘贴第一行
  • "kp - 粘贴第二行

然而,在p处,Emacs粘贴了我的第二行,就好像忽略了寄存器并直接复制到剪贴板一样。有没有关于如何使用类似Vim的寄存器的建议?如果没有,请问有没有关于在Evil-Mode中复制和粘贴多个区域的建议?


在你输入了“ky”后,:registers会显示寄存器 k 中的任何内容吗? - kiritsuku
是的,注册k存储了我的复制文本,但我的剪贴板也被替换为复制的文本。在evil-mode中复制时如何保留剪贴板内容? - modulitos
3个回答

13

我认为设置这个值就可以了:

(setq x-select-enable-clipboard nil)

在Spacemacs中使用evil,"+y仍然会复制到剪贴板,所以我认为那应该有效。


如果不行,这篇博客文章描述了一种更冗长的方法:编写处理程序来避免触摸剪贴板的所有删除方式,并重新绑定键以使用这些处理程序。


哇,那篇博客文章正是我需要的。它完美地解决了我的问题!而且代码非常干净和模块化;-) - modulitos
这在以“emacs -nw”启动的终端中不起作用。你能建议一些在终端中也能工作的替代方案吗? - enitihas
@enitihas:我不知道。我不认为终端中的 yy 会与窗口化的有很大的区别。你可能需要提出一个新问题,专门针对终端(也要包括这个问题的链接!)。 - idbrii
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - zzantares
@ZzAntáres 抱歉链接坏了!当这种情况发生时确实令人失望。但是这里是能解决问题的代码:https://github.com/LukeSwart/.emacs.d/blob/master/modes.el#L386-L479 如果有任何问题,请保持联系! - modulitos
修复链接以使用Wayback Machine。 - idbrii

2
这是100%的解决方案,如果你使用spacemacs或其他编辑器:
(fset 'evil-visual-update-x-selection 'ignore)

Credit to: https://emacs.stackexchange.com/a/15054/8377(感谢:https://emacs.stackexchange.com/a/15054/8377)

这并没有解决上述问题。我认为你的答案正在解决另一个问题... - modulitos

1

在vim中,它的表现类似。无论您打算使用哪个寄存器,数字寄存器都会被覆盖。在Emacs(当然带有evil)和Vim中运行您的示例,我正确填充了“k”寄存器,并在“0”寄存器下,最近的yank与“k”寄存器相同。


这并不应被视为正确答案,因为我也更愿意听到如何解决这个小问题。 - mike3996
1
请查看idbrii上面的回答。他链接的博客文章似乎完美地解决了这个问题。 - modulitos

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