启用set mouse=a后,在Vim内部复制的文本将不会粘贴到Vim外部。有人知道怎么解决这个问题吗?
在这里,用鼠标选择文本将打开可视模式,并禁用弹出菜单中的复制选项:
启用set mouse=a后,在Vim内部复制的文本将不会粘贴到Vim外部。有人知道怎么解决这个问题吗?
在这里,用鼠标选择文本将打开可视模式,并禁用弹出菜单中的复制选项:
当前回答
添加set clipboard= named到你的.vimrc。因此,它将使用剪贴板寄存器'*'而不是未命名的寄存器来进行所有的删除、删除、更改和放置操作(注意,它不仅影响鼠标)。
寄存器'*'的行为取决于您的平台以及如何编译vim(或者是否使用neovim)。
如果它不起作用,您可以尝试使用set clipboard=unnamedplus,但此选项仅在X11系统上有意义(因此gvim也是如此)。
其他回答
添加set clipboard= named到你的.vimrc。因此,它将使用剪贴板寄存器'*'而不是未命名的寄存器来进行所有的删除、删除、更改和放置操作(注意,它不仅影响鼠标)。
寄存器'*'的行为取决于您的平台以及如何编译vim(或者是否使用neovim)。
如果它不起作用,您可以尝试使用set clipboard=unnamedplus,但此选项仅在X11系统上有意义(因此gvim也是如此)。
在用键盘或鼠标进行可视选择后使用",+,y。无论如何,您都不应该使用终端的copy命令,因为它复制的是终端看到的内容,而不是实际的内容。下面是它的作用:
,+告诉Vim使用名为+的寄存器进行下一次删除、删除或放入操作。命名为+的寄存器是一个特殊寄存器,它是X11剪贴板寄存器。(在其他系统上,你会用*来代替,我想,看:help clipboard和:help x11-selection) y是yank命令,它告诉Vim将选择放入前面命名的寄存器中。
你可以这样映射它:
:vmap <C-C> "+y
然后用鼠标高亮显示,然后按Control-C复制。
该特性仅在使用+xterm_clipboard选项编译Vim时有效。运行vim——version查看是否存在。
有一个很好的变通方法值得补充:
可以使用GPM守护进程,这是一个用于虚拟控制台的剪切和粘贴实用程序和鼠标服务器。它将提供跨所有虚拟控制台的功能!
复制粘贴操作可以通过<CTRL-C>/<CTRL-V>完成。
安装GPM
GPM的MAN页
值得一提的是,通过设置mouse=nvi,当进行选择时,然后按:<ESC>,你将得到鼠标选择复制到主选择剪贴板(相当于一个“*y”)。
参考:帮助鼠标
该方法的主要优点是,如果您有多个垂直分割,它将只从当前缓冲区中选择。使用<Shift>,正如在主答案中提到的,在这种情况下,将同时从所有3个文件复制,这并不完全是一个人想要的,期望或需要的。
用鼠标选择时按shift键。这将使鼠标选择行为表现为鼠标=a未启用。
注意:这个技巧也适用于“中间按钮粘贴”:如果你想粘贴在外部选择的vim文本,点击中间按钮时按shift键。只要确保插入模式是激活的,当你这样做(你可能还想:设置粘贴,以避免意想不到的效果)。
OS X (mac): 按住alt/option同时选择(source)