是否可以直接从Vim复制到剪贴板?yy只把东西复制到Vim的内部缓冲区。我想复制到操作系统的剪贴板。在Vim中有这样的命令吗?或者你只能在Vim中提取东西?
当前回答
如果您通过putty连接到Unix系统,那么按照以下步骤复制文件的内容
突出显示要复制的文本(您将能够逐页复制) 按ctrl+c(它将复制文本到剪贴板 粘贴任何外部编辑器 完成
其他回答
使用寄存器“+”复制到系统剪贴板(即。+y而不是y)。
同样,您可以从“+”粘贴从系统剪贴板(即。"+p而不是p)。
*寄存器将执行此操作。在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)
我想补充一种方法来复制一行到剪贴板,并在函数上使用它。
这里有一个你在浏览器中打开URL的例子
let g:chrome_exe = 'C:/.../Google/Chrome/Application/chrome.exe'
function OpenURL()
" copy the line and put it in the register *
normal "*yy
:execute "silent !start ".g:chrome_exe." ".getreg("*")
endfunction
map ,url :call OpenURL()<CR>
对于OSX,就像上面的10342个答案所表明的那样,你需要确保vim支持剪贴板功能,并且OSX预发布的那个不支持剪贴板,如果你运行 酿造安装vim它将工作。
除了运行vi仍然会让你运行预先发布的OSX版本,而不是你从brew安装的版本。
为了解决这个问题,我简单地将我的vim命令别名为酿造版本,而不是OSX的默认版本:
alias vim="/usr/local/Cellar/vim/8.0.1100_1/bin/vim"
现在我是金的
我是一个Vim newby,但是,复制所有的文本到系统剪贴板(例如,如果你想把它粘贴到文字处理器或其他文本编辑器,如gedit,鼠标垫等…),在正常模式:
ggVGy
或者,更简单地说:
:%y
按照建议,我还安装了vim-gtk和put
设置剪贴板= unnamedplus
在我的。vimrc
一切都很正常
如果你只想复制文本的一部分,使用可视模式(v),选择你想要复制的文本,然后按y。
最后,我建议使用剪贴板程序,如Clipman(我最喜欢的)、Clipit、Parcellite或类似的程序。
(我在Debian Stretch Xfce中使用vim 8.0)
原谅我的英语!:-)