鼠标(:set mouse = a)打开时,vim的复制粘贴不起作用?


52

我试图将粘贴内容从vim复制到另一个应用程序,也从该应用程序vim复制到使用鼠标右键单击,然后复制粘贴(或者使用Ctrl+ vCtrl+,c并且Command显然也尝试了Mac OSX 的版本)。但是,当我尝试执行此操作时,它仅将第一个单词vim复制到应用程序中或从应用程序复制到时vim,它会复制所有内容,但会插入奇怪的制表符和空格。我认为这是我决定在终端上打开鼠标时发生的。如:

:set mouse=a

.vimrc在iTerm(mac os x)的文件上有该行。虽然,是有可能使我的副本不在其他应用程序粘贴vim不与突破mouse=a呢?还是在复制粘贴时至少可以将鼠标关闭?我做了:help鼠标,但是评论对我没有用。我会在这里粘贴它们,但是...我的复制粘贴工具坏了!

我确实尝试过:set mouse!:set mouse=a!但是这些没有任何用处... :(


我的环境的其他信息:

我大多数时候也使用tmux,但是,我在没有tmux会话的情况下测试了此错误/错误,这就是为什么我将其主要发布为vim问题的原因。


4
我可以告诉您,vim使用y动词就可以适应主要选择。我不知道您为什么不只使用它。
HalosGhost 2014年

1
我不会那样做,因为我不知道该怎么做,对我的无能表示歉意。直到您提到它,我什至不知道它的存在。请分享您的知识!:)
Pinocchio 2014年

这是macvim吗?
Patrick

不,它不仅是iTerm(正如我在问题上提到的那样,但还是个好问题)。
Pinocchio 2014年

Answers:


66

mouse=a 防止使用可读字符复制和粘贴vim的功能。

更改mouse=amouse=r,应该可以解决您的问题。

我想知道的一件事是,您是否将鼠标设置为mouse = a来更改vim的配置文件?

原始答案^

如果mouse=r不能完全复制过去,则将其更改为mouse=v

双方mouse=rmouse=v有你需要相同的功能,但根据的vimrc您正在使用一个会更好地工作,那么其他。


您还尝试过突出显示文本并使用鼠标中键将其粘贴到另一个位置。尝试按Ctrl + v和Ctrl + c时往往会更好地工作
bgrif 2014年

我不知道您的问题是什么意思:one thing I am wondering is, are you changing the config file for your vim with the mouse set to mouse=a?您是说:mouse=a我的.vimrc文件中是否存在?:mouse=a我的.vimrc文件中确实存在。
Pinocchio 2014年

1
只是--with-x=yes?我不需要放:set --with-x=yes mouse=a东西吗?您能说明您的意思吗?
Pinocchio 2014年

1
让我研究一下是否需要结合--with-x=yes使用set mouse=a。当我阅读它时,我所看到的只是它本身在配置文件中。但这可能有所不同,所以我想确保我告诉你正确的事情对你有用。
bgrif 2014年

1
非常感谢,此建议像使用mouse = v一样
令人着迷

21

对于OS X用户:mouse=a使用复制粘贴,alt而不是Shift选择文本。然后cmd-ccmd-v正常工作。

经过大量的搜寻后,在这里https://stackoverflow.com/a/4608387/671639找到了这个答案。


你是上帝……:')
omerjerk

唯一对我有用的东西,谢谢!

3
对我来说,在OSX上使用“ fn”代替“ shift”或“ alt”。
ssasa


6

Bharath的解决方案可以Shift在复制时按键进行操作,但是在编号或哈希注释的情况下,它可以复制的内容超出了您想要复制的内容。

即使使用mouse = a,一种方法也可以使用可视模式,方法是按V单个光标或按Shift+ V进行全行高亮显示,您可以使用箭头上下移动并用于Y复制或D剪切,这应该可行。


@Anthon,会做的,谢谢您的澄清。
amrx 2015年

1
我改写了您的自我发音,使之更像是一个答案,这样mod可能会保持原样(并且您可能会在其中获得一些声誉,因此可以发表评论)。如果对原件进行了更小的修改,则评论会更合适。
Anthon 2015年

5

遇到相同的问题:无法使用鼠标突出显示,因此无法在终端会话中从VIM复制并粘贴到Windows文档和浏览器:进行了以下操作,现在可以使用:

: set clipboard=unnamedplus
: set mouse=r

4

请参阅:http : //vimdoc.sourceforge.net/htmldoc/options.html

请查看参考资料底部的“注意”部分:
启用鼠标后,按住Shift键仍可使用鼠标按钮。这包括使用鼠标按钮复制粘贴。

*'mouse'* *E538*
'mouse'         string  (default "", "a" for GUI, MS-DOS and Win32)
            global
            {not in Vi}
    Enable the use of the mouse.  Only works for certain terminals
    (xterm, MS-DOS, Win32 |win32-mouse|, QNX pterm, *BSD console with
    sysmouse and Linux console with gpm).  For using the mouse in the
    GUI, see |gui-mouse|.
    The mouse can be enabled for different modes:
        n   Normal mode
        v   Visual mode
        i   Insert mode
        c   Command-line mode
        h   all previous modes when editing a help file
        a   all previous modes
        r   for |hit-enter| and |more-prompt| prompt
    Normally you would enable the mouse in all four modes with:
        :set mouse=a
    When the mouse is not enabled, the GUI will still use the mouse for
    modeless selection.  This doesn't move the text cursor.

    See |mouse-using|.  Also see |'clipboard'|.

    Note: When enabling the mouse in a terminal, copy/paste will use the
    "* register if there is access to an X-server.  The xterm handling of
    the mouse buttons can still be used by keeping the shift key pressed.
    Also see the 'clipboard' option.

1
感谢您提供参考,但是它回答了这个问题吗?如果是这样,您能否确定报价的那部分内容,并提供实际答案的摘要?
G-Man

0

至于问题的第二部分,您在其中指定从其他应用程序粘贴到vim时会添加制表符/空格。尝试将其添加到〜/ .vimrc设置粘贴中或在vim中添加,然后在正常模式下按“ shift” +“:”并键入“ set paste”


0

您可以使用y复制(抽出),并p与连贴:set mouse=a在一组~/.vimrc。使用v+ arrow keys突出显示文本。要快速复制整行,请使用shift+ y


0

在我的Mac上,帮助这两件事的原因是:

  • :set鼠标-= a
  • fn +点击(而不是shift或alt)

0

如果您确实不需要任何其他剪贴板缓冲区,请~/.vimrc在下面的两行中使用a的所有不错功能,gui-mouse然后使用y(扬键)粘贴到系统剪贴板中:

set mouse=a
set clipboard=unnamed
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.