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

时间:2011-01-05 19:06:37

标签: vim configuration mouse copy-paste

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

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

enter image description here

15 个答案:

答案 0 :(得分:382)

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

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

OS X(mac): 选择(source

时按住alt /选项

答案 1 :(得分:45)

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

您可以像这样映射:

:vmap <C-C> "+y

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

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

答案 2 :(得分:16)

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

答案 3 :(得分:13)

在OSX上使用 fn 而不是 shift

答案 4 :(得分:6)

在Ubuntu中,可以使用X-Term副本&amp;在使用Shift键高亮显示的文本上粘贴VIM内部的绑定(Ctrl-Shift-C&amp; Ctrl-Shift-V)。

答案 5 :(得分:5)

另一个OSX-Mac选项是取消选中View->Allow Mouse Reporting(或按⌘-R切换它。)这允许您在鼠标交互和鼠标选择之间切换,这在选择和复制/粘贴时可能很有用。因为您不必持有修改键来执行此操作。

注意带有行号的多行:

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

答案 6 :(得分:1)

您可以在vim命令行中使用:set mouse&来启用使用鼠标选择的文本的复制/粘贴。然后,您只需使用鼠标中键或 shift insert 即可将其粘贴。

答案 7 :(得分:1)

set clipboard=unnamed添加到您的.vimrc中。因此,它将对所有的yank,delete,change和put操作使用剪贴板寄存器'*'而不是未命名的寄存器(请注意,它不仅影响鼠标)。

寄存器'*'的行为取决于您的平台以及vim的编译方式(或者是否使用neovim)。

如果它不起作用,则可以尝试使用set clipboard=unnamedplus,但是此选项仅在X11系统(和gvim)上才有意义。

答案 8 :(得分:0)

如果您正在使用Putty会话,那么它会自动复制选择。 如果我们在vim中使用了“set mouse = a”选项,则使用Shift +鼠标选择拖动会自动选择文本。 需要签入X-term。

答案 9 :(得分:0)

em ... 按住 Shift 组合键,然后单击鼠标右键

答案 10 :(得分:0)

当我重读该问题时,我无意中解释了如何关闭set mouse=a并发现OP不想一开始就将其关闭。无论如何,对于任何集中搜索如何关闭鼠标(set mouse=)的人来说,我都会在这里引用我的答案:https://unix.stackexchange.com/a/506723/194822

答案 11 :(得分:0)

vim的编译设置是问题的一部分。 vim --version显示了这些。

在OSX中,默认vim具有-clipboard,但您需要+clipboard

在osx上,您可以并且显然通常应该使用macvim。您可以brew cask install macvim拥有+clipboard

他们会有两个病毒。

~$ ls -l /usr/bin/vim   <--- default vim
-rwxr-xr-x  1 root  wheel  1745984 15 Jul  2017 /usr/bin/vim

~$ ls -l /usr/local/bin/vim   <-- macvim, installed recently via that mentioned brew line. 
lrwxr-xr-x  1 apple  admin  42 16 May 23:32 /usr/local/bin/vim -> /Applications/MacVim.app/Contents/bin/mvim
~$ 

运行vim将运行macvim'cos /usr/local/bin应该在路径中/usr/bin之前,尽管您可以使用which vim进行检查。

运行vim(运行macvim)是可以的,但是您可能希望将vi映射到macvim'cos,否则运行vi会保持默认的vim!您可以使用ln重写或删除(使用rm)并重新创建vi符号链接。要做到这一点而没有“不允许的操作”错误,您必须(暂时)禁用SIL https://apple.stackexchange.com/questions/208478/how-do-i-disable-system-integrity-protection-sip-aka-rootless-on-macos-os-x

macvim具有+clipboard所示的vim --version

这里是~/.vim/vimrc的工作行,仅包含必需的行。

:set mouse=a
:map <leader>c "+y
:map <leader>v "+p

默认引导键为反斜杠。

我读到一个建议,即应该使用引导键。(当然,控件已经使用了许多键,因此建议不要使用控件。我也不知道这是否也适用于命令键,但是无论如何)。

使用上述映射,\c将执行"+y,该操作将从称为+的寄存器复制到剪贴板。并且\v将从称为+的寄存器中粘贴。

这是在Windows之间工作的复制/粘贴。

另一个操作系统可能需要"*而不是"+

答案 12 :(得分:0)

在复制和粘贴选择内容时保持班次对我有用

答案 13 :(得分:0)

还值得一提的是,通过使用 set mouse=nvi,在进行选择时然后按 : <ESC>,您会将鼠标选择复制到主选择剪贴板(相当于 {{ 1}}).

参考:"*y

这种方法的主要优点是如果你有多个垂直分割,它只会从当前缓冲区中选择。在这种情况下,使用主要答案中提到的 help mouse 将同时从所有 3 个文件中复制,这并不是人们想要、期望或需要的。

答案 14 :(得分:-2)

在ESC模式下,当设置鼠标= a时,使用鼠标选择文本。这将启用vim中的可视模式。然后你可以按“&#39;抽取选定的文字和&#39; p&#39;将它粘贴到任何你想要的地方。这只发生在vim中。