我在 Ubuntu 10.10 上使用 gVim。我想将文本复制(拉出)到系统剪贴板,以便复制的文本在其他应用程序中可用。
这适用于"+y
. 但我想让它与y
.
我试图映射y
到"+y
但后来yy
不再工作(因为它产生"+y"+y
)。
我也尝试过
:set clipboard=unnamed
,但这仅适用于另一个方向:我可以粘贴的系统剪贴板中的文本p
。
我在 Ubuntu 10.10 上使用 gVim。我想将文本复制(拉出)到系统剪贴板,以便复制的文本在其他应用程序中可用。
这适用于"+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
双向工作,但它设置了*
不同于剪贴板寄存器 ( +
) 的 «mouse» ( ) 寄存器。
大多数在线解决方案只是告诉您映射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
请注意, nowyy
命令做了两件事:首先它正常注册,然后它"
注册(系统剪贴板)。该y
命令做同样的事情。这是因为我想保留 Vim 的多剪贴板功能。
对于从系统剪贴板粘贴,我曾经有noremap gp "+p
(全局粘贴),但现在我使用了优秀的插件 Yankring。
在可视模式下选择一些文本,它将被插入系统剪贴板(您中键单击粘贴的那个,我不记得确切的名称)。
如果您set mouse=a
可以像在许多其他应用程序中一样使用鼠标进行视觉选择。
就我而言,我有时可以从 gvim 复制到系统剪贴板,有时不能。我找到了一种解决方法,尽管我不明白潜在的问题。如果我在另一个应用程序中复制文本(例如记事本,就像我在 Windows 7 上一样),那么我可以从 gvim 复制文本并将其粘贴到其他地方。看来我需要为 gvim 的每个副本执行此操作。