首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Windows上的Emacs中保留剪贴板内容?

如何在Windows上的Emacs中保留剪贴板内容?
EN

Stack Overflow用户
提问于 2009-05-11 16:33:03
回答 5查看 1.8K关注 0票数 16

这是我遇到过的几次场景:

我从其他程序中复制了一些文本。在我粘贴/拖动文本之前,转到Emacs并进行一些编辑。C-y猛拉一下,瞧...不是我想要粘贴的文本。然后我意识到,当我移动东西的时候,我使用了kill-line和ring kill-word这样的命令,这些被删除的行和单词现在占据了kill-ring。但是键入M-y不会带回原始复制的文本,因此我需要返回到原始程序再次复制文本。更糟糕的是,如果原始程序被关闭,那么我将完全丢失复制的文本。

Kill-line等都是这样的基本命令(就像按delete键一样),虽然我不介意使用这些命令使kill-ring变得有点混乱,但我希望我的原始文本会留在kill-ring中的某个地方,这样我就可以通过多次键入M-y来最终找到它。在覆盖剪贴板内容之前,如何让Emacs自动将当前剪贴板内容保留到kill-ring中?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-05-11 20:32:06

每当您在Emacs中执行kill操作时,此代码都会自动将选定内容(从Emacs外部)放到kill-ring上。它已经在Linux上进行了测试,但不应仅限于Linux。

代码语言:javascript
复制
(defadvice kill-new (before kill-new-push-xselection-on-kill-ring activate)
  "Before putting new kill onto the kill-ring, add the clipboard/external selection to the kill ring"
  (let ((have-paste (and interprogram-paste-function
                         (funcall interprogram-paste-function))))
    (when have-paste (push have-paste kill-ring))))

如果您发现自己经常这样做,那么查看一下browse-kill-ring包可能会很有用,它可以让您很好地查看杀手环(而不是重复输入M-y)。

票数 12
EN

Stack Overflow用户

发布于 2009-09-10 07:48:18

请注意,最新的Emacs CVS版本具有变量save-interprogram-paste-before-kill,它执行的正是etc/NEWS文件中的cf::

** When save-interprogram-paste-before-kill' is non-nil, emacs will not clobber the the interprogram paste when something is killed in it by saving the former in thekill-ring‘在后者之前。

票数 3
EN

Stack Overflow用户

发布于 2009-05-11 16:40:34

我认为问题在于,当您从emacs外的剪贴板上拉出时,您并没有保存到删除环。

您需要的是使用函数clipboard-yank插入区域,然后以某种方式选择它并将其保存到删除环,就像函数kill- ring -save所做的那样。

或者更好的做法是编写一个函数clipboard-save- to - kill - ring - and -yank,它将剪贴板保存到kill ring,然后将其拖出。

编辑:稍微跟踪一下代码,这会做你想做的事情;你可以把它挂在一个键上。它将windows剪贴板的内容保存到删除环中。

代码语言:javascript
复制
(defun clipboard-to-kill-ring()
  "save the external clipboard contents to the kill ring"
  (interactive)
    (let ((clip (funcall interprogram-paste-function)))
      (when clip
        (kill-new clip)))

(defadvice yank (before maybe-copy-windows-clipboard (arg))
    (clipboard-to-kill-ring))

(ad-activate 'yank)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/848936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档