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

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


当前回答

他们…… 继续按Shift键,然后单击鼠标右键

其他回答

vim编译时使用的编译设置也是问题的一部分。Vim -version显示这些。

在OSX中,默认的vim有-clipboard,但你需要+clipboard

在osx上,你可以而且显然应该使用macvim。你可以做酿造桶安装macvim那个有+剪贴板。

你会有两个vims。

~$ 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,因为路径中/usr/local/bin应该在/usr/bin之前,不过您可以检查使用哪个vim。

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

Macvim有+剪贴板显示由vim——版本

这是一个工作的~/。Vim /vimrc只包含所需的行。

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

默认的领导键是反斜杠。

我读到一个建议说应该使用先导键。(当然,control已经有很多键在使用中,所以建议不要使用control。我不知道这是否适用于命令键,但无论如何)。

有了上面提到的映射,\c将执行“+y”,这将从称为+的寄存器复制到剪贴板。\v将从名为+的寄存器中粘贴。

这就是窗口间的复制/粘贴。

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

您可以在vim命令行中使用:set mouse&来启用使用鼠标选择的文本的复制/粘贴。然后您可以简单地使用鼠标中间按钮或shiftinsert粘贴它。

另一个OSX-Mac选项是取消勾选View->允许鼠标报告(或按⌘- r切换它)。这允许你在鼠标交互和鼠标选择之间切换,这在选择和复制/粘贴一些位时可能很有用,因为你不需要按住修改键来做这件事。

有行号的多行注意事项:

我通常启用行号,所以如果你选择多行,这也会复制行号。如果你想复制多条没有行号的行,使用:set nonu禁用这些行号,然后你可以:set nu在复制完成后重新启用它们。

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

添加set clipboard= named到你的.vimrc。因此,它将使用剪贴板寄存器'*'而不是未命名的寄存器来进行所有的删除、删除、更改和放置操作(注意,它不仅影响鼠标)。

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

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