我在Ubuntu 10.10上使用gVim,想要将文本复制(yank)到系统剪贴板中,以便在其他应用程序中使用。
使用"+y
可以实现该功能。但是我想使用y
来完成这个操作。
我试图将y
映射为"+y
,但这样yy
就不能正常工作了(因为它会产生"+y"+y
)。
我还尝试过
:set clipboard=unnamed
但这只能实现反向操作:我可以用p
粘贴系统剪贴板中的文本。
我在Ubuntu 10.10上使用gVim,想要将文本复制(yank)到系统剪贴板中,以便在其他应用程序中使用。
使用"+y
可以实现该功能。但是我想使用y
来完成这个操作。
我试图将y
映射为"+y
,但这样yy
就不能正常工作了(因为它会产生"+y"+y
)。
我还尝试过
:set clipboard=unnamed
但这只能实现反向操作:我可以用p
粘贴系统剪贴板中的文本。
你尝试过使用这个命令进行映射吗:
noremap y "+y
这个映射存在一个严重的错误:它将在正常、可视和操作挂起模式下映射y
,而您只需要正常和可视模式。请使用以下内容:
nnoremap y "+y
vnoremap y "+y
还可以尝试使用set clipboard=unnamedplus
(至少需要vim-7.3.74)。set clipboard=unnamed
两个方向都有效,但它设置了“鼠标”(*
)寄存器,该寄存器不同于剪贴板寄存器(+
)。
y
映射到"+y
。但有时问题在于"+y
甚至都无法正常工作。您需要检查您的vim
编译了哪些功能。vim –-version | grep xterm_clipboard
xterm_clipboard
前面的符号,如果是+
(加号),则转到步骤4。sudo apt-get install vim-gnome
,然后运行sudo update-alternatives –config vim
,在列表中选择vim.gnome
(您应该使用与您的系统相对应的正确命令)。再次运行命令vim –-version | grep xterm_clipboard
,现在您应该能够得到+
(加号)。+
(加号)或*
(星号)寄存器,这取决于您使用的操作系统,有时它们是等价的。如何检查?只需复制一些随机文本,然后打开vim
并键入:reg
,检查哪个寄存器显示您刚刚复制的字符串。如果是+
(加号),则将set clipboard=unnamedplus
添加到您的.vimrc
中。如果是*
(星号),则添加set clipboard=unnamed
。vim
内部复制一些内容,然后键入:reg
检查系统剪贴板是否已更改。如果是,则当您在vim
之外粘贴时,您将获得该寄存器中的任何内容。我和你有着同样的想法,但我已经这么做了好几年。
nnoremap yy yy"+yy
vnoremap y ygv"+y
yy
命令有两个作用:首先像平常一样复制到寄存器,然后再复制到"
寄存器(系统剪贴板)。y
命令也是如此。这是因为我想保留Vim的多重剪贴板功能。noremap gp "+p
(全局粘贴),但现在我使用优秀的插件Yankring。在可视模式下选择一些文本,它将被插入到系统剪贴板中(您可以通过鼠标中键粘贴来使用它,我无法记住确切的名称)。
如果您设置了set mouse=a
,则可以像在许多其他应用程序中一样使用鼠标进行可视选择。
"+y
之后粘贴可以解决该问题。 - bli