我想从 vim 复制文本,例如通过选择visual mode
,然后ctrl+insert
我希望将复制的文本放在系统缓冲区中,这样我就可以使用例如将其粘贴到我喜欢的任何位置ctrl+v
。这可能吗?
当我需要将长文本从 vim 窗口复制到缓冲区时,问题出现了。我无法简单地用鼠标选择所有内容然后复制,因为文本不适合窗口。
答案1
是的。Vim 将系统剪贴板引用为寄存器,你可以像使用其他寄存器一样使用它。
主剪贴板是*
,因此您可以在可视模式下突出显示,然后键入"*y
。如果您使用的是 X11,则可以使用寄存器复制到 X11 缓冲区+
。最后,您可以使用 将默认寄存器重新分配给剪贴板寄存器:set clipboard=unnamed
。如果您这样做,则任何复制、复制或删除都将自动转到系统剪贴板,而无需您先手动指定寄存器。
答案2
视觉选择(v、V或CTRL+V)可以自动复制到 X11 选择 (* 缓冲区)。
在非 GUI 模式下,剪贴板选项控制此功能(仅当您键入时出现 +xterm_clipboard 时才支持vim --version
)。在 GUI 模式下guioptions
控制它。
这将使所有 Visual 模式选择自动转到 X11 主选择:
set clipboard+=autoselect<br>
set guioptions+=a
这将关闭它:
set clipboard-=autoselect<br>
set guioptions-=a
参见:(help 'clipboard'
需要单引号)。
答案3
在 OS X 上,您可以使用pbcopy
/pbpaste
命令行工具来实现这一点。
例如,要复制当前行,请运行:
:.!pbcopy "Copy current line clipboard
复制整个文件:
:!echo "%:p" | pbcopy
或者要复制选定的文本(使用可视模式通过:v/ V),!pbcopy
选择文本后输入,这样它就变成::'<,'>!pbcopy
,这样它会将文本复制到剪贴板中。
对于 Linux,使用xclip
,gpm
或相似的东西。