Copiar y pegar para vim no funciona cuando el mouse (: set mouse = a) está activado?


53

Intenté copiar y pegar algo de vim a otra aplicación y también, desde esa aplicación hasta vimhacer clic derecho con el mouse y luego copiar y pegar (o con Ctrl+ vy Ctrl+ cy también probé la Commandversión para Mac OSX, obviamente). Sin embargo, cuando intento hacerlo, solo copia la primera palabra cuando lo hago vimo cuando copio desde la aplicación vim, copia todo, pero inserta pestañas y espacios extraños. Creo que esto sucedió cuando decidí encender mi mouse en la terminal. Como en:

:set mouse=a

Tengo esa línea en mi .vimrcarchivo en iTerm (mac os x). Sin embargo, ¿es posible hacer que mi copia pegue con otras aplicaciones que no vimse rompen con el mouse=aencendido? ¿O al menos es posible apagar mi mouse mientras hago la copia y pego? Hice :helpmouse pero los comentarios no me fueron útiles. Los pegaría aquí pero ... ¡mi herramienta de copiar y pegar está rota!

Intenté :set mouse!y :set mouse=a!estos no hicieron nada útil ... :(


Información adicional de mi entorno:

También uso tmux la mayor parte del tiempo, aunque probé este error / error sin una sesión tmux, por eso publiqué esto principalmente como una pregunta vim.


44
Puedo decirte que vimes capaz de tirar de la Selección Primaria muy bien usando el yverbo. No sé por qué no usarías eso.
HalosGhost

1
Supongo que no haría eso porque no sé cómo hacerlo, disculpe mi incompetencia. Ni siquiera sabía que existía hasta que lo mencionaste. ¡Por favor comparte tu conocimiento! :)
Pinocho

¿Es esto macvim ?
Patrick

no, no es solo iTerm (como mencioné en la pregunta, pero es una buena pregunta).
Pinocho

Respuestas:


67

mouse=a evita la capacidad de copiar y pegar de vim con caracteres legibles.

Cambie mouse=aa mouse=ry eso debería solucionar su problema con eso.

Una cosa que me pregunto es, ¿está cambiando el archivo de configuración para su vim con el mouse configurado como mouse = a?

respuesta original ^

Si mouse=rno le da todas las opciones de copiar pasado cámbielo amouse=v

Tanto mouse=ry mouse=vtienen las mismas funciones que están necesitando, pero dependiendo de la vimrc que está utilizando uno funcionará mejor que el otro.


también ha intentado resaltar el texto y usar el botón central del mouse para pasar a otro lugar. que tiende a funcionar mejor cuando se intenta Ctrl + v y Ctrl + c
bgrif

No sé qué significa su pregunta: ¿ one thing I am wondering is, are you changing the config file for your vim with the mouse set to mouse=a?Quiere decir si tengo :mouse=aen mi archivo .vimrc? Tengo :mouse=aen mi archivo .vimrc.
Pinocho

1
solo --with-x=yes? No necesito poner :set --with-x=yes mouse=ao algo? ¿Podrías aclarar a qué te refieres?
Pinocho

1
Permítanme investigación si es necesario combinar --with-x=yesa set mouse=a. Cuando estaba leyendo todo lo que vi fue que estaba solo en el archivo de configuración. Pero podría ser diferente, así que quiero asegurarme de decirle lo correcto que funcionará para usted.
bgrif

1
Muchas gracias, esta sugerencia funciona como un encanto con mouse = v
Pamungkas Jayuda

21

Para usuarios de OS X: copiar y pegar con el mouse=auso en altlugar de seleccionar Shiftel texto. Entonces cmd-cy cmd-vtrabaje como se esperaba.

Encontré esta respuesta aquí https://stackoverflow.com/a/4608387/671639 después de mucho googlear.


Eres Dios ......: ')
omerjerk

lo unico que funciono para mi, gracias!
Don

3
Para mí, en OSX funciona "fn" en lugar de "shift" o "alt".
ssasa


6

La solución de Bharath , presionar Shiftmientras se copia, lo hará, pero copiará más de lo que le gustaría copiar en caso de numeración o comentarios hash.

Una forma de hacerlo incluso con mouse = a es usar el modo visual presionando Vpara un solo cursor o Shift+ Vpara resaltar la línea completa, y puede moverse hacia arriba o hacia abajo con flechas y usar Ypara copiar o Dcortar y eso debería funcionar.


@Anthon, lo haré, gracias por la aclaración.
amrx

1
Reformé tu comentario pronunciado para que sea más como una respuesta de esa manera, los mods probablemente lo dejarán como está (y es posible que ganes algo de reputación para que puedas comentar). Si el original hubiera sido una corrección menor, los comentarios habrían sido más apropiados.
Anthon

5

Tuve el mismo problema: no podía resaltar el uso del mouse, por lo que no podía copiar y pegar desde VIM en una sesión de terminal en el documento y navegador de Windows: hizo lo siguiente y ahora funciona:

: set clipboard=unnamedplus
: set mouse=r

4

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

Mire la sección de notas en la parte inferior de la referencia:
al habilitar el mouse, los botones del mouse aún se pueden usar manteniendo presionada la tecla Mayús. Esto incluye copiar y pegar usando los botones del 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.

1
Gracias por contribuir con esa referencia, pero ¿ responde la pregunta ? Si es así, ¿puede identificar la parte de la cita que lo hace, presentando un resumen de la respuesta real?
G-Man dice 'Restablecer a Monica'

0

En cuanto a la segunda parte de su pregunta, ¿dónde especificó que al pegar desde otras aplicaciones a vim agrega pestañas / espacios? Intente agregar esto a su ~ / .vimrc set paste o en vim antes de pegar en modo normal, presione "shift" + ":" y escriba "set paste"


0

Puede usar ypara copiar (tirar) y ppegar incluso con la :set mouse=aconfiguración ~/.vimrc. Use v+ arrow keyspara resaltar el texto. Para copiar una línea completa rápidamente, use shift+ y.


0

En mi Mac, lo que ayudó fueron esas dos cosas:

  • : establecer mouse- = a
  • fn + clic (en lugar de shift o alt)

0

Use estas dos líneas a continuación en su ~/.vimrcpara usar todas las características agradables de ay gui-mousepéguelo en el portapapeles del sistema usando y(tecla de extracción) si realmente no necesita ningún buffer adicional del portapapeles:

set mouse=a
set clipboard=unnamed
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.