Copiar e colar para o vim não funciona quando o mouse (: set mouse = a) está ativado?


52

Eu estava tentando copiar e colar algo do vim para outro aplicativo e, também, desse aplicativo para vimusar o botão direito do mouse e depois copiar e colar (ou com Ctrl+ ve Ctrl+ ce também tentei a Commandversão para o Mac OSX, obviamente). No entanto, quando tento fazê-lo, ele copia apenas a primeira palavra quando o faço vimou copio do aplicativo para vim, copia tudo, mas insere guias e espaços estranhos. Acho que isso aconteceu quando decidi colocar o mouse no terminal. Como em:

:set mouse=a

Eu tenho essa linha no meu .vimrcarquivo no iTerm (mac os x). No entanto, é possível fazer minha cópia colar com outros aplicativos que não estão presentes para vimnão romper com o mouse=aon? Ou pelo menos é possível desligar o mouse enquanto faço a cópia e colar? Eu fiz o :helpmouse, mas os comentários não foram úteis para mim. Gostaria de colá-los aqui, mas ... minha ferramenta de copiar e colar está quebrada!

Eu tentei :set mouse!e :set mouse=a!mas estes fez nada de útil ... :(


Informações adicionais do meu ambiente:

Também estou usando o tmux na maioria das vezes, porém, testei esse erro / bug sem uma sessão do tmux, por isso postei isso principalmente como uma pergunta do vim.


4
Eu posso lhe dizer que vimé capaz de puxar para a Seleção Principal muito bem usando o yverbo. Não sei por que você não usaria isso.
HalosGhost

11
Eu não faria isso porque acho que não sei como fazer isso, peço desculpas pela minha incompetência. Eu nem sabia que existia até você mencionar. Por favor, compartilhe seu conhecimento! :)
Pinocchio

Isso é macvim ?
Patrick

não, não é apenas o iTerm (como mencionei na pergunta, mas uma boa pergunta).
Pinocchio

Respostas:


66

mouse=a impede a capacidade de copiar e colar fora do vim com caracteres legíveis.

Mude mouse=apara mouse=re isso deve corrigir seu problema com isso.

Uma coisa que me pergunto é: você está alterando o arquivo de configuração do seu vim com o mouse definido como mouse = a?

resposta original ^

Se mouse=rnão fornecer todas as opções de cópia anterior, altere-o paramouse=v

Ambos mouse=re mouse=vtêm as mesmas funções que você precisa, mas dependendo do vimrc que você está usando, um funcionará melhor que o outro.


Você também tentou destacar o texto e use o botão do meio do mouse para colar em outro lugar. que tende a funcionar melhor quando tryng a Ctrl + v e Ctrl + c
bgrif

Não sei o que sua pergunta significa: one thing I am wondering is, are you changing the config file for your vim with the mouse set to mouse=a?quer dizer, se eu estiver :mouse=ano meu arquivo .vimrc? Eu tenho :mouse=ano meu arquivo .vimrc.
Pinóquio

11
apenas --with-x=yes? Eu não preciso colocar :set --with-x=yes mouse=aou algo assim? Você poderia esclarecer o que quer dizer?
Pinóquio

11
Deixe-me pesquisar se você precisa combinar --with-x=yesa set mouse=a. Quando eu estava lendo tudo o que eu vi foi por si só no arquivo de configuração. Mas pode ser diferente, então quero ter certeza de que digo a coisa certa que funcionará para você.
bgrif

11
Muito obrigado, essa sugestão funciona como um encanto com o mouse = v
Pamungkas Jayuda

21

Para usuários do OS X: Para copiar e colar, mouse=ause em altvez de Shiftselecionar o texto. Em seguida, cmd-ce cmd-vfuncionam como esperado.

Encontre esta resposta aqui https://stackoverflow.com/a/4608387/671639, depois de pesquisar bastante.


Você é Deus ......: ')
omerjerk

a única coisa que funcionou para mim, obrigado!
Don

3
Para mim, no OSX funciona "fn" em vez de "shift" ou "alt".
ssasa


6

A solução de Bharath , pressionada Shiftdurante a cópia, fará isso, mas copiará mais do que você gostaria de copiar no caso de numeração ou comentários de hash.

Uma maneira de fazer isso, mesmo com mouse = a, é usar o modo visual pressionando o Vcursor único ou Shift+ Vpara destacar a linha completa, e você pode mover para cima ou para baixo com as setas e Ycopiar ou Dcortar, e isso deve funcionar.


@ Anthon, Will, Obrigado pelo esclarecimento.
Amrx

11
Eu reformulei seu comentário auto-pronunciado para torná-lo mais como uma resposta que os mods provavelmente o deixarão como está (e você pode ganhar alguma reputação nele para poder comentar). Se o original tivesse sido uma correção menor, comentar seria mais apropriado.
Anthon

5

Tinha o mesmo problema: não era possível destacar o uso do mouse, portanto, não era possível copiar e colar do VIM em uma sessão de terminal no documento e no navegador do Windows: Fez o seguinte e agora funciona:

: set clipboard=unnamedplus
: set mouse=r

4

Consulte: http://vimdoc.sourceforge.net/htmldoc/options.html

Veja a seção Nota na parte inferior da referência:
Ao ativar o mouse, os botões do mouse ainda podem ser usados ​​mantendo a tecla Shift pressionada. Isso inclui copiar e colar usando os botões do mouse.

*'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.

11
Obrigado por contribuir com essa referência, mas responde à pergunta ? Em caso afirmativo, você pode identificar a parte da citação que faz isso, apresentando um resumo da resposta real?
G-Man diz 'Reinstate Monica'

0

Quanto à segunda parte da sua pergunta, onde você especificou que ao colar de outros aplicativos no vim, ele adiciona guias / espaços. Tente adicionar isso ao seu ~ / .vimrc set paste ou no vim antes de colar no modo normal, pressione "shift" + ":" e digite "set paste"


0

Você pode usar ypara copiar (puxar) e pcolar mesmo com a :set mouse=aconfiguração ~/.vimrc. Use v+ arrow keyspara destacar o texto. Para copiar uma linha inteira rapidamente, use shift+ y.


0

No meu Mac, o que ajudou foram essas duas coisas:

  • : define mouse- = a
  • fn + clique (em vez de shift ou alt)

0

Use estas duas linhas abaixo ~/.vimrcpara usar todos os recursos interessantes de gui-mousee cole na área de transferência do sistema usando y(tecla yank) se você realmente não precisar de nenhum buffer adicional da área de transferência:

set mouse=a
set clipboard=unnamed
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.