如何将选定的行复制到Vim中的剪贴板


Answers:


105

SHIFTV使您进入选择行模式。然后"*y将当前选定的行拖到*剪贴板的寄存器中。有许多不同的寄存器,用于不同的目的。有关Windows和Linux上和寄存器selection and drop registers之间的区别的详细信息,请参见上的部分。*+


10
在Linux中,+是全局剪贴板,*是选择剪贴板,而在Windows中,两者都映射到全局剪贴板。
Mohnish

74

如果您使用的是Linux,并且正在使用VIm版本7.3.74或更高版本(从Ubuntu 11.10开始安装的版本可以满足此要求),则可以

set clipboard=unnamedplus

它将选中的文本放入全局剪贴板,并允许您从全局剪贴板粘贴,而无需使用任何特殊的寄存器。与ldigas的解决方案不同,这也适用于非GUI版本的VIm。


8
这仅在我安装vim-gnome软件包而不是的情况下有效vim
dan-klasson,2012年

4
@ dan-klasson:此选项需要使用剪贴板支持编译的vim。您可以通过键入来检查是否是这种情况vim --version | grep "+xterm_clipboard"
BenC

这似乎可以复制到其他非vim程序中,但是当我进入vim的插入模式并使用“ shift + insert”从剪贴板粘贴时,仅粘贴了前两行...我安装了vim-gnome ; 我想念其他东西吗?
t2k32316

1
如果你在MacOS你可能需要使用clipboard=unnamed替代(vim.wikia.com/wiki/Accessing_the_system_clipboard
streof

13
set guioptions+=a

简而言之,每当您选择/拖动某些内容时,它也会...(不是Vim的,而是窗口系统的全局键盘)。这样,您就不必考虑将事物拖入特殊寄存器中。


2
//,此建议适用于哪些操作系统和/或Vim版本?
内森·巴桑尼斯

10

对于GVIM,请点击v以进入可视模式;选择文本,然后单击Ctrl+Insert将所选内容复制到全局剪贴板中。

从菜单中可以看到快捷键是"+y按住Shift键,然后按"+然后释放Shift并按y(与Shift + Insert相比比较麻烦)。


为什么这个答案不受欢迎?:(
Ankit Shubham

6

如果在MAC OSX中使用vim,不幸的是它附带了较早的版本,并且不符合剪贴板选项。幸运的是,自制软件可以轻松解决此问题。

安装vim:

brew install vim --with-lua --with-override-system-vim

安装vim的gui版本:

brew install macvim --with-lua --with-override-system-vim

重新启动终端以生效。

将以下行追加到〜/ .vimrc

set clipboard=unnamed

现在,您可以在vim中复制该行yy 并将其粘贴到系统范围内。


//,我刚刚在OSX 10.12.3上进行了测试,并且按照您的建议,在安装了最新的Vim和​​最新的Vim的GUI版本之后,它可以正常工作。谢谢,@匿名。
内森·巴桑尼斯

4

如果尚未安装“ xclip”,则...

sudo apt-get install xclip

Xclip将数据放入“选择/突出显示”剪贴板,您单击鼠标中键即可粘贴,而不是“ ctrl + v”

在vim中使用ex命令:

7w !xclip

要么

1,7w !xclip

要么

%w !xclip

然后单击鼠标中键粘贴到其他应用程序中...


4

如果vim是在剪贴板支持下编译的,则可以使用以下"*y含义:将视觉上选择的文本拖入寄存器*('*'用于剪贴板)

如果没有剪贴板支持,我认为只有其他方法是Ctrl+Insert在视觉上选择vim中的文本后使用。


3

我已将以下行添加到我的 .vimrc

vnoremap <F5> "+y<CR>

这使您可以通过按将选定的文本复制到剪贴板F5。您必须处于可视模式下才能起作用。


1
添加到~/.vimrc谢谢,这要好得多。
jaggedsoft

2

将以下代码添加到您的.vimrc

if has('clipboard')
    if has('unnamedplus')  " When possible use + register for copy-paste
        set clipboard=unnamed,unnamedplus
    else         " On mac and Windows, use * register for copy-paste
        set clipboard=unnamed
    endif
endif
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.