【问题标题】:gvim: Easy copying into system clipboardgvim:轻松复制到系统剪贴板
【发布时间】:2011-05-30 17:56:09
【问题描述】:

我在 Ubuntu 10.10 上使用 gVim。我想将文本复制(拉出)到系统剪贴板,以便复制的文本在其他应用程序中可用。

这适用于"+y。但我想让它与y 一起使用。

我尝试将y 映射到"+y,但随后yy 不再起作用(因为它会生成"+y"+y)。

我也试过 :set clipboard=unnamed 但这仅适用于另一个方向:系统剪贴板中的文本我可以使用p 粘贴。

【问题讨论】:

  • 我只是使用不同的映射来处理剪贴板,并保持y命令的正常功能

标签: vim clipboard ubuntu-10.10


【解决方案1】:

您是否尝试使用此命令进行映射:

noremap y "+y

?此映射包含一个严重错误:它将y 映射为正常、可视和操作员待定模式,而您只需要正常和可视模式。使用以下内容:

nnoremap y "+y
vnoremap y "+y

也可以试试set clipboard=unnamedplus(它至少需要 vim-7.3.74)。 set clipboard=unnamed 双向工作,但它设置了不同于剪贴板寄存器 (+) 的«鼠标» (*) 寄存器。

【讨论】:

    【解决方案2】:

    大多数在线解决方案只是告诉您将y 映射到"+y。但有时问题是"+y 甚至不起作用。您确实需要检查您的 vim 编译时使用了哪些功能。

    尝试以下步骤:

    1. 打开你的终端,运行vim –-version | grep xterm_clipboard
    2. 检查xterm_clipboard前面的符号,如果是+(加号),则进行第4步。
    3. 如果是-(减号),运行sudo apt-get install vim-gnome,然后运行sudo update-alternatives –config vim,在列表中选择vim.gnome(您应该使用与您的系统相对应的正确命令)。再次运行命令vim –-version | grep xterm_clipboard,现在你应该可以得到+(加号)。
    4. 检查你的系统剪贴板是使用+(加号)还是*(星号)vim的寄存器,这取决于你使用的操作系统,有时它们是等价的。如何检查?只需复制一些随机文本,然后打开vim 并输入:reg,检查哪个寄存器显示您刚刚复制的字符串。如果是+(加号),请将set clipboard=unnamedplus 添加到您的.vimrc。如果是*(星号),请添加set clipboard=unnamed
    5. 测试一下。在vim 中复制一些内容,然后键入:reg 以检查系统剪贴板是否已更改。如果是这样,当您粘贴到vim 之外时,您将获得该寄存器中的任何内容。

    【讨论】:

    • @CHID 很高兴为您提供帮助
    • 为我工作,谢谢。但是步骤 3 中的命令是做什么的呢? (为什么它会起作用?)
    【解决方案3】:

    我和你有同样的想法,但我做了很多年。

    nnoremap yy yy"+yy
    vnoremap y ygv"+y
    

    请注意,现在yy 命令做了两件事:首先它正常注册,然后它拉到" 注册(系统剪贴板)。 y 命令做同样的事情。这是因为我想保留 Vim 的多剪贴板功能。

    对于从系统剪贴板粘贴,我以前有noremap gp "+p(全局粘贴),但现在我使用了优秀的插件Yankring。

    【讨论】:

      【解决方案4】:

      visual mode中选择一些文本,它将被插入到系统剪贴板中(你中键粘贴的那个,我不记得确切的名字了)。

      如果您set mouse=a,您可以像在许多其他应用程序中一样使用鼠标进行视觉选择。

      【讨论】:

      • 由于某种原因,在 Firefox 的 jupyter 笔记本的单元格中,“视觉选择”文本的中键单击副本对我不起作用。在"+y 工作后粘贴。
      【解决方案5】:

      在我的情况下,我有时可以从 gvim 复制到系统剪贴板,有时不能。我找到了一种解决方法,尽管我不明白潜在的问题。如果我在另一个应用程序中复制文本(例如记事本,就像我在 Windows 7 上一样),那么我可以从 gvim 复制文本并将其粘贴到其他地方。看来我需要为 gvim 中的每个副本执行此操作。

      【讨论】:

        猜你喜欢
        • 2010-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多