是否可以直接从Vim复制到剪贴板?yy只把东西复制到Vim的内部缓冲区。我想复制到操作系统的剪贴板。在Vim中有这样的命令吗?或者你只能在Vim中提取东西?
当前回答
我已经使用这些很多年了:
nnoremap Y "+y
vnoremap Y "+y
nnoremap yY ^"+y$
你现在可以只使用大写Y复制到剪贴板,小写Y不会受到影响,例如通过set clipboard= named,所以你仍然可以选择拷贝是否会到剪贴板。
在ubuntu 21.04, vim 8.2上测试。
其他回答
如果你的vim编译时没有+xterm_clipboard选项,就像Debian和Ubuntu中默认的那样,你可以将选择或整个缓冲区输送到处理桌面剪贴板的外部程序。对于xclip(您可能需要在前面安装它),命令将是:w !xclip -sel clip
关于这个问题,我看到了很多答案,而解决这个问题的方法是多种答案的结合。
我遵循的步骤,使vim复制到系统剪贴板
使用sudo apt卸载vim。(我太懒了,不知道如何用+剪贴板支持重新编译它。 使用sudo apt Install带有+clipboard的vim-athena安装另一个名为vim-athena的vim包。 添加到~/。Vimrc下面的行:set clipboard=unnamedplus。 通过进入命令模式并输入Source %来查找文件。 保存并退出。
注意: 我使用的是Ubuntu 20.04。
我在mac osx(10.15.3)和新的vim。我发现这太令人沮丧了,这里所有的答案都太复杂了,或者不适用于我的情况。我最终在两个方面得到了这个工作:
使用pbcopy的键映射:适用于mac附带的旧版本的vim。 将vmap ":w !pbcopy<CR><CR>添加到~/.vimrc中 现在您可以直观地选择并点击“(两个撇号)复制到剪贴板 安装新版本的vim,这样我就可以访问其他答案中最推荐的解决方案: 编译安装vim的别名vim=/usr/local/bin/vim(应该把这个添加到~/。Bashrc或同等语言) 现在您可以直观地选择并点击“+yy复制到剪贴板
*寄存器将执行此操作。在Windows中,+和*是等价的。在unix中,+和*之间有细微的区别:
在Windows下,*和+寄存器 是等价的。对于X11系统, 不过,它们有所不同。对于X11系统, *是选区,+是剪切缓冲区(如剪贴板)。 http://vim.wikia.com/wiki/Accessing_the_system_clipboard
*可能是您大多数时候想要的,所以我使用*,因为它在两种环境中都能正常工作。
在Linux发行版中,你必须先安装vim-gtk(又名gvim)才能获得剪贴板功能。这是因为非gtk vim通常在编译时没有X11支持。这是为了允许它只在控制台机器(通常是服务器)上运行。
对于那些在拉取或放入时如何使用寄存器感到困惑的人,你只需写上“然后是寄存器的名称”。因此,要将内容复制到剪贴板寄存器,您只需输入“*y”,然后输入“*p”(来源:Kyle Mathews)
我在我的.vimrc中写了一个简单的行来让复制工作。希望这能帮助到一些人。不幸的是,我的vim没有安装剪贴板支持,所以这些建议对我都不起作用。基本上,将这一行粘贴到你的.vimrc中:
map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>
如果你想了解详细信息,你可以在我的博客上阅读