使用set mouse = a复制Vim外部的文本

lyu*_*uba 212 vim mouse configuration copy-paste

启用后set mouse=a,Vim内部复制的文本不会粘贴到Vim之外.有人知道解决这个问题的方法吗?

在这里,用鼠标选择文本会打开可视模式并禁用Copy弹出菜单中的选项:

在此输入图像描述

Fra*_*ois 396

shift使用鼠标选择时按.这将使鼠标选择的行为就像mouse=a未启用一样.

注意:此技巧也适用于"中间按钮粘贴":如果要粘贴在外部选择的vim文本,请shift在单击中间按钮时按下.只需确保在执行此操作时激活插入模式(您可能还希望:set paste避免意外的影响).

OS X(mac):选择时保持alt /选项()

  • 对于Mac终端,在**OS X 10.11 El Capitan**之后,`Fn`键是正确的方法.即,(使用`mouse = a`enable)选择文本,同时按下'Fn`键,然后使用CMD + C复制并粘贴到您想要的任何地方. (15认同)
  • 如果您有行号(如屏幕截图所示),那么在Mac OS X上使用ALT进行选择时,行号也会被复制.在这种情况下,最好在选择块选择模式时使用ALT + CMD,这样可以避免选择数字. (6认同)
  • 还可以通过按<kbd> ctrl </ kbd> + <kbd> shift </ kbd> +鼠标左键来启动块选择来使用块选择.鼠标中键将复制的内容粘贴到其他窗口中. (3认同)
  • 好的,这确实是解决方案.但是,如果你想选择比屏幕更多的代码呢?(然后你必须同时滚动和选择) (2认同)
  • 我不知道这个答案怎么会有这么多赞成票。如果您启用了鼠标支持 [以避免复制行号](/sf/ask/400978161/) 那么这个建议完全是无用。 (2认同)

Jos*_*Lee 47

使用"+y.您不应该使用终端的复制命令,因为它复制终端看到的内容而不是实际内容.

你可以像这样映射它:

:vmap <C-C> "+y
Run Code Online (Sandbox Code Playgroud)

然后用鼠标突出显示某些内容并按下Control-C进行复制.

此功能仅在使用该+xterm_clipboard选项编译Vim时有效.运行vim --version以查明是否有.

  • 或者可能``*y`取决于操作系统. (4认同)
  • 对我来说,这是一个比接受的答案更好的解决方案,因为使用这种方法,不会复制行号. (2认同)

小智 17

而不是在.vimrc 中set mouse=a使用set mouse=r

  • 请说为什么。乍一看,这基本上与完全禁用鼠标模式相同,这不是问题的重点。 (3认同)
  • 但它禁用了滚动 (2认同)

ssa*_*asa 15

在OSX上使用fn而不是shift.


Mar*_*ons 5

在Ubuntu中,可以在使用Shift键高亮显示的文本上使用VIM内部的X-Term复制和粘贴绑定(Ctrl-Shift-C和Ctrl-Shift-V).


reo*_*eor 5

另一个OSX-Mac选项是取消选中View->Allow Mouse Reporting(或按⌘-R切换它.)这允许您在鼠标交互和鼠标选择之间切换,这在选择和复制/粘贴几个位时可能很有用,因为您没有持有一个修饰键来做到这一点.

带行号的多行注意事项:

我通常启用行号,因此如果选择多行,这也会复制行号.如果要复制多行而不使用行号禁用数字,:set nonu则可以:set nu在完成复制后重新启用它们.