【问题标题】:Yank from clipboard in Emacs在 Emacs 中从剪贴板中拉出
【发布时间】:2013-12-28 07:35:12
【问题描述】:

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

我尝试将其插入我的~/.emacs:

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

而且它似乎几乎可以工作。它不会立即起作用,但是在调用一个将某些东西插入到杀伤环中的函数之后,例如(kill-line),它似乎起作用了..

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    您已启用默认为tx-select-enable-clipboard 和您已设置为tx-select-enable-primary。因此,剪贴板的值和主要选择之一被按该顺序放在杀伤环上都在函数x-selection-value中从X11请求。

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

    (or clip-text primary-text)

    具有明显含义的变量。但是,如果剪贴板的文本在两次连续调用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 中用鼠标选择了其他内容。同样,剪贴板胜过主要选择。

    设置

    (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 复制的内容也放在主程序上,上述解决方法就可以工作。

    【讨论】:

    • 太棒了!感谢您的精彩解释。它似乎也有效:)
    【解决方案2】:

    如果您安装了 xsel:

    M-! xsel -o 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-21
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-11
      • 1970-01-01
      相关资源
      最近更新 更多