gpt4 book ai didi

emacs - 在 Emacs 中从剪贴板 Yank

转载 作者:行者123 更新时间:2023-12-02 04:41:11 25 4
gpt4 key购买 nike

我在 Ubuntu 12.04 上使用 Gnu Emacs 24.3。我想直接在之前通过鼠标选择的文本上使用 (yank),而不先调用 (kill-ring-save)。假设我在当前的 Emacs 缓冲区中标记文本 "test"。然后该区域被高亮显示(根据 transient-mark-mode)。然后我将鼠标移动到缓冲区中的另一个位置。我现在可以按下中间按钮来插入选定的文本。但这不是我想要实现的。相反,我想调用一个函数来插入使用选择的文本。假设此函数绑定(bind)到 F1。所以我改为按下鼠标左键,但现在事件区域​​(选定文本)被取消选择并丢失。那么,当我按下 F1 时,如何访问所选文本?

我试着在我的 ~/.emacs 中插入这个:

(setq x-select-enable-primary t)
(setq interprogram-paste-function 'x-cut-buffer-or-selection-value)

而且它似乎工作得差不多了。它不能立即工作,但是在调用一个将某些东西插入 kill ring 的函数之后,例如 (kill-line),它似乎可以工作..

最佳答案

您已启用默认为 tx-select-enable-clipboard 和您已设置的 x-select-enable-primaryt。因此,剪贴板的值和主要选择之一是 按此顺序将两者放入 kill ring 两者都在函数 x-selection-value 中从 X11 请求。

剪贴板获胜,因为x-selection-value的返回值为

(或剪辑文本主文本)

具有明显意义的变量。但是,如果剪贴板的文本在 x-selection-value 的两次连续调用中保持不变,则 clip-text 设置为 nil。 clip-text 的最后一个值存储在 x-last-selected-text-clipboard 中。 x-last-selected-text-clipboard 的起始值为 nil。

因此,您第一次调用 x-selection-value(通过 yank 间接调用)时,即使您已经在 emacs 中使用鼠标设置了主要选择,您也会获得剪贴板的值。

如果您之后仍留在 emacs 中,那么使用什么并不重要——剪贴板或主要选择。你得到复制的文本。但是,如果您在外部应用程序中将一些文本复制到剪贴板,那么即使您在 emacs 中用鼠标选择其他内容,您在 emacs 中的下一个 yank 也是该文本。同样,剪贴板胜过主要选择。

设置

(setq x-select-enable-clipboard nil)

会解决你的问题。


如果你想从一些只设置剪贴板的应用程序中获取复制的文本,那么上面的方法是不合适的。也许,在这种情况下,更好的选择是在使用鼠标选择文本时老化剪贴板:

(defadvice mouse-set-region (before age-x-clipboard activate)
(when (and x-select-enable-clipboard x-select-enable-primary)
(let (x-select-enable-primary) ;; Do not touch primary selection.
(x-selection-value))))

我认为您的实际问题是混合使用两种不同的复制粘贴方法。你想复制每个主要选择(纯鼠标选择方法)并且你想通过剪贴板粘贴(通过键盘复制)。但是,与此同时我注意到 firefox 也将所有内容都放在了主要选择上。只要您使用的所有程序都将使用 C-c 复制的内容也放在主服务器上,上述解决方法就有效。

关于emacs - 在 Emacs 中从剪贴板 Yank,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20812177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com