27

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

这适用于"+y. 但我想让它与y.

我试图映射y"+y但后来yy不再工作(因为它产生"+y"+y)。

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

4

5 回答 5

15

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

noremap y "+y

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

nnoremap y "+y
vnoremap y "+y

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

于 2010-12-31T14:17:29.497 回答
12

大多数在线解决方案只是告诉您映射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 vimvim.gnome在列表中选择(您应该使用与您的系统相对应的正确命令)。再次运行命令vim –-version | grep xterm_clipboard,现在你应该可以得到+(加号)。
  4. 检查您的系统剪贴板是否使用vim 的+(加号)或*(星号)寄存器,这取决于您使用的操作系统,有时它们是等效的。如何检查?只需复制一些随机文本,然后打开vim并键入:reg,检查哪个寄存器显示您刚刚复制的字符串。如果是+(加号),请添加set clipboard=unnamedplus到您的.vimrc. 如果是*(星号),请添加set clipboard=unnamed.
  5. 测试一下。复制里面的东西vim,然后键入:reg检查系统剪贴板是否已更改。如果是这样,当您粘贴到vim.
于 2013-01-14T03:14:20.767 回答
3

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

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

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

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

于 2011-01-01T02:47:12.460 回答
2

在可视模式下选择一些文本,它将被插入系统剪贴板(您中键单击粘贴的那个,我不记得确切的名称)。

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

于 2010-12-25T23:33:46.530 回答
0

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

于 2015-03-31T15:00:59.790 回答