gvim:轻松复制到系统剪贴板

时间:2010-12-25 23:21:11

标签: vim clipboard ubuntu-10.10

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

这适用于"+y。但我想让它与y合作。

我尝试将y映射到"+y但后来yy不再有效(因为它会产生"+y"+y)。

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

5 个答案:

答案 0 :(得分:13)

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

noremap y "+y

?此映射包含一个严重错误:它在正常,可视和操作员挂起模式下映射y,而您只需要普通和可视模式。使用以下内容:

nnoremap y "+y
vnoremap y "+y

同时尝试set clipboard=unnamedplus(至少需要vim-7.3.74)。 set clipboard=unnamed在两个方向都有效,但它设置了«mouse»(*)寄存器,它与剪贴板寄存器(+)不同。

答案 1 :(得分:10)

他们谈到的所有映射只是地图简单复制y到“+ y。 但大多数时候,问题是甚至“+ y都不起作用。

因此,您需要检查系统中是否已启用某个标志。

  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,现在你应该能够获得+(加号)。否则,请使用Google查看正在发生的事情......
  4. 检查你的系统剪贴板是否使用vim的+(加号)或*(星号)寄存器,这与操作系统不同,有时它们是等效的。怎么检查?简单,只需从网站上复制一些字符串,然后打开vim并输入:reg,检查哪个寄存器存储您刚刚从系统剪贴板复制的字符串。 (它在我的机器上显示+)。如果它是+(加号),请将set clipboard=unnamedplus添加到.vimrc。如果它是*(星号),请将set clipboard = unnamed添加到.vimrc。
  5. 试一试。复制vim中的内容,然后键入:reg以检查系统剪贴板是否已更改。如果是这样的话,当您在vim之外执行Ctrl-V时,您将获得该寄存器中的任何内容。

答案 2 :(得分:3)

我和你有着相同的想法,但我做了多年。

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

请注意,现在yy命令执行两项操作:首先,它按正常方式注册,然后将其移至"注册表(系统剪贴板)。 y命令执行相同的操作。这是因为我想保留Vim的多个剪贴板功能。

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

答案 3 :(得分:2)

visual mode中选择一些文本,它将被插入系统剪贴板(中间点击粘贴的那个,我无法回想起确切的名称)。

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

答案 4 :(得分:0)

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