【问题标题】:in vim with xclip, yank to clipboard在 vim 中使用 xclip,拉到剪贴板
【发布时间】:2011-07-11 13:27:00
【问题描述】:

我在 Ubuntu 中有 vim 7.2 (-clipboard -xterm_clipboard ...)。你可以看到它不支持剪贴板。所以我想编写一个小的 vim 脚本,它使用 xclip 工具将可视选定的文本复制到剪贴板。

你知道 xclip 工具是这样工作的:

echo 'hello' | xclip -selection clipboard      #it copies 'hello' into clipboard

而且 vim 可以运行 shell 命令,所以我想将可视选择的文本复制到 where 而不是 'hello',但我不知道如何结合 xclip 和 vim。你能帮我实现它吗?

感谢您的宝贵时间!

【问题讨论】:

    标签: vim


    【解决方案1】:

    您是否正在使用您的发行版提供的vim?如果是这样,vim-tinyvimvim-nox 包不支持剪贴板,但它确实存在于 vim-lesstiffvim-gtkvim-gnome 中。

    如果你坚持按自己的方式做,

    :'<,'>w !xclip
    

    会将当前选定的行发送到 xclip,并且

    :call system('xclip', @0)
    

    会将最后一个 yank 发送到 xclip。

    【讨论】:

    • +1 指出除了答案之外可能是真正的问题(使用错误的包)
    • 是的,我在 Ubuntu 10.04 中使用发行版提供的 vim。
    • 感谢 ephemient,我这样尝试:":'w !xclip -selection clipboard" 正如你所说,它将整行复制到剪贴板,如何仅复制视觉选定的文本而不是整个行吗?
    • @Nyambaa:尝试切换到分发版提供的 vim-gnome 或先拉动。在 vimscript 中处理逐字符、逐行和逐块选择并非易事。
    • 我必须进行视觉选择,输入:w !xclip -selection clipboard
    【解决方案2】:

    对我来说,Vim 无法通过 SSH 复制到 *+ 寄存器,即使 :echo has('clipboard')1,并且其他 X 程序仍然可以工作。我的解决方案是添加一个映射(通过寄存器)到 xclip:

    vnoremap <silent><Leader>y "yy <Bar> :call system('xclip', @y)<CR>
    

    我选择文本,点击\y,它就会到达我的本地剪贴板。您可以更改它使用的寄存器,例如c 用于带有"cy@c 的“剪贴板”。

    【讨论】:

    • 这里发生的疯狂事情:这样做之后,我可以middle-click 将拉出的行粘贴到我的本地计算机上,但这需要一段时间。似乎内容的实际提取发生在我单击粘贴时,而不是在我拉动时。发生这种情况时,由于其他原因(例如关闭浏览器选项卡)中键单击也需要一段时间。完成远程剪贴板内容后,只需选择其他文本即可解决此问题。
    • :vmap 命令显示v ,y * "yy | :call system('xclip', @y)&lt;CR&gt;。剪贴板内容不受影响。编辑:如果我将'xclip' 更改为'xclip -sel clipboard',它将按预期工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 2023-04-08
    相关资源
    最近更新 更多