启用set mouse=a
后,复制到Vim内部的文本不会粘贴到Vim之外。有人知道解决这个问题的方法吗?
此处,使用鼠标选择文本会打开可视模式并禁用弹出菜单中的Copy
选项:
答案 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中。