使用set mouse = a启用在Vim之外复制文本


232

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

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

在此处输入图片说明


2
如果您的vim是使用+clipboard和编译的mouse=a,则无需使用终端弹出菜单就可以从vim复制/粘贴。您可以clipboard使用来检查是否已启用vim --version
杰罗姆Pouiller

@Jezz Worth澄清了A)mouse=a不是编译选项,它是vimrc中的内容。B)使用vim编译时,+clipboard它允许您在:set number打开时复制/粘贴,而无需复制/粘贴数字,尽管也许您仍然必须做一些映射C)不必自己重新编译VIM,它可以在任何操作系统支持的某些软件包管理器的vim中打开。我的回答提到了这个问题。
barlop

也许也xsel可以为您安装作品,您可以使用编辑器或鼠标选择文本,然后单击ctrl+c以复制文本,这适用于neovim,github.com
Naeem Baghi

Answers:


426

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

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

OS X(mac):在选择(source)时按住alt / option


2
好的,这确实是解决方案。但是,如果您想选择比屏幕上更多的代码,该怎么办?(然后您必须同时滚动和选择)
Ozkan 2013年

3
还可以通过按下<kbd> ctrl </ kbd> + <kbd> shift </ kbd> +鼠标左键来使用块选择,以开始选择块。鼠标中键可将复制的内容粘贴到其他窗口中。
micrub 2014年

6
如果您有行号(如屏幕截图所示),则在Mac OS X上使用ALT选择时,行号也会被复制。在这种情况下,最好在选择“块选择”模式时使用ALT + CMD,这样就可以避免选择数字。
亚伦

16
对于Mac Terminal,在OS X 10.11 El Capitan之后Fn键是正确的方法。即(mouse=a启用)在Fn按键的同时选择文本,然后使用CMD + C复制并粘贴到所需的任何位置。
YaOzI

1
我不知道那个答案怎么会有这么多投票。如果启用了鼠标支持以避免复制行号,则此建议完全没有用。
Stelios Adamantidis

49

使用"+y使得视觉选择后。无论如何,您都不应该使用终端的copy命令,因为这会复制终端看到的内容而不是实际内容。这是这样做的:

  • "+告诉Vim使用+为下一次删除,拉动或放置而命名的寄存器。命名的寄存器+是一个特殊的寄存器,它是X11剪贴板寄存器。(在其他系统上,你会用*相反,我认为,看到:help clipboard:help x11-selection
  • y 是yank命令,它告诉Vim将选择内容放入先前命名的寄存器中。

您可以这样映射它:

:vmap <C-C> "+y

然后用鼠标突出显示某些内容,然后按Control-C将其复制。

仅当使用该+xterm_clipboard选项编译Vim时,此功能才有效。运行vim --version查找是否有。


4
或可能"*y取决于操作系统。
frabjous 2011年

可行!但是,组合非常复杂,实际上有4个按钮。可能我需要在使用另一个答案的同时使用“ shift”方式映射另一个按钮。
lyuba 2011年

映射也可以很好地进行:)现在,我不知道你们应该回答哪个答案:)
lyuba 2011年

2
对我来说,这是比接受的答案更好的解决方案,因为使用此方法,不会复制行号。
索洛席尔瓦

+clipboard呢 关于什么的+clipboardxterm_clipboard了吗?
barlop

18

代替在.vimrc 中set mouse=a使用set mouse=r


1
但它会禁止滚动
Makesh

3
请说为什么。乍一看,这似乎与完全禁用鼠标模式相同,这不是问题的重点。
Mikel

@Mikel对,也请参阅我的回答Josh Lee的回答可能会有帮助
barlop

不幸的是,如果启用,这也会复制行号。
vikin9'9

17

在OSX上使用fn代替shift


工作对我来说有option哪些是关键alt的MacOS主机上的等效键。它是debian9上的远程终端。通过在遥控器上添加set mouse=a/ set mouse=rin都不起作用 /etc/vim/vimrc
mrtipale '18

5

在Ubuntu中,可以对已使用Shift键突出显示的文本使用VIM内部的X术语复制和粘贴绑定(Ctrl-Shift-C和Ctrl-Shift-V)。


4

OSX-Mac的另一个选项是取消选中View->Allow Mouse Reporting(或按⌘-R进行切换。)这使您可以在鼠标交互和鼠标选择之间切换,这在选择和复制/粘贴一些位时可能很有用,因为您没有按住修饰键即可。

带行号的多行注释:

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


1

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


然后,当您:set number突出显示数字时。所以不是很好。因此,您撤消了set mouse=a
Barlop

1

问题是编译vim时使用的编译设置。vim --version显示这些。

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

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

他们将有两个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'cos ,该路径/usr/local/bin应该/usr/bin在路径之前,尽管您可以使用进行检查which vim

运行vim(运行macvim)是可以的,但是您可能希望将vi映射到macvim'cos,否则运行vi会保持默认的vim!您可以使用ln重写或删除(使用rm)并重新创建vi符号链接。要做到这一点没有“操作不允许”的错误,你必须(临时)禁用SIL。/apple/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之间工作的复制/粘贴。

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


两个病毒都有-xterm_clipboard。也许a +xterm_clipboard在某种程度上是有益的,但是对这个解决方案来说并不重要。
barlop

0

如果使用的是Putty会话,那么它将自动复制选择。如果我们在vim中使用了“ set mouse = a”选项,则使用Shift + Mouse拖动选择将自动选择文本。需要检查X项。


0

em ...按住Shift不放,然后单击鼠标右键




0

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

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

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


-3

在ESC模式下,当设置mouse = a时,使用鼠标选择文本。这将在vim中启用可视模式。然后,您可以按'y'拖动所选文本,然后按'p'粘贴到您想要的任何位置。这仅在vim中发生。


不,这在粘贴到vim之外时不起作用
barlop
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.