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

Estaba intentando copiar y pegar algo de vim a otra aplicación y también, de esa aplicación a vim usando haga clic derecho con el mouse y luego copie y pegue (o con Ctrl + v y Ctrl + c y también probé la versión Command para mac OSX, obviamente). Sin embargo, cuando intento hacerlo, solo copia la primera palabra cuando lo hago desde vim o cuando copio desde la aplicación a vim, copia todo, pero inserta pestañas y espacios extraños. Creo que esto sucedió cuando decidí activar el mouse en la terminal. Como en:

:set mouse=a 

Tengo esa línea en mi archivo .vimrc en iTerm (mac os x). Sin embargo, ¿es posible copiar y pegar con otras aplicaciones que no están en vim para no romper con el mouse=a activado? ¿O al menos es posible apagar el mouse mientras hago la copia y pegado? Hice :help mouse, pero los comentarios no fueron útiles para mí. Los pegaría aquí, pero … ¡mi herramienta de copiar y pegar está rota!

Intenté :set mouse! y :set mouse=a! pero estos no hicieron nada útil … 🙁


Información adicional de mi entorno:

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

Comentarios

  • Puedo decirte que vim es capaz de pasar a la selección principal sin problemas utilizando el verbo y. No ‘ no sé por qué no ‘ t simplemente usar eso.
  • Yo no ‘ no haría eso porque no ‘ No sé cómo hacer eso, supongo, discúlpame por mi incompetencia. No ‘ ni siquiera sabía que existía hasta que lo mencionaste. Comparte tu conocimiento! 🙂
  • ¿Es esto macvim ?
  • no, no es solo iTerm (como mencioné en la pregunta, pero una buena pregunta).
  • @Pinocchio – echa un vistazo aquí: ¿Cómo para hacer que vim pegue (y copie) el portapapeles del sistema ‘ .

Respuesta

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

Cambiar mouse=a a mouse=r y 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 en mouse = a?

respuesta original ^

Si mouse=r no le da todas las opciones de copia pasada cámbielo a mouse=v

Ambos mouse=r y mouse=v tienen las mismas funciones que necesita, pero dependiendo del vimrc que esté usando, una funcionará mejor que la otra.

Comentarios

  • también has intentado resaltar el texto y usar el botón central del mouse para pasar a otro lugar. Que tiende a funcionar mejor cuando intentas con Ctrl + v y Ctrl + c
  • No ‘ no sé lo que significa tu pregunta: one thing I am wondering is, are you changing the config file for your vim with the mouse set to mouse=a? Quieres decir si tengo :mouse=a en mi archivo .vimrc? Tengo :mouse=a en mi archivo .vimrc.
  • solo --with-x=yes? No necesito poner :set --with-x=yes mouse=a o algo ¿En g? ¿Podría aclarar lo que quiere decir?
  • Déjeme investigar si necesita combinar --with-x=yes con 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 decirte lo correcto que funcionará para ti.
  • Muchas gracias, esta sugerencia funciona a la perfección con mouse = v

Respuesta

Para usuarios de OS X: Para copiar y pegar con mouse=a use alt en lugar de Shift para seleccionar el texto. Luego, cmd-c y cmd-v funcionan como se esperaba.

Encontré esta respuesta aquí https://stackoverflow.com/a/4608387/671639 después de muchas búsquedas en Google.

Comentarios

  • Tú eres Dios … …: ‘)
  • lo único que funcionó para mí, ¡gracias!
  • Para mí en OSX funciona » fn » en lugar de » shift » o » alt «.
  • La configuración mouse=v me funcionó con cmd + c

Respuesta

De https://stackoverflow.com/questions/4608161/copy-text-out-of-vim-with-set-mouse-a-enabled/4608387

Presione la tecla «shift» mientras selecciona con el mouse. Esto hará que la selección del mouse se comporte como si mouse = a no estuviera habilitado.

Esto funciona y ha sido verificado por revisores de stack-overflow que lo aceptaron como respuesta 🙂

Respuesta

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

: set clipboard=unnamedplus : set mouse=r 

Responder

La solución de Bharath , al presionar Shift mientras 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 por presionando V para un solo cursor o Shift + V para resaltar la línea completa, y puede moverse hacia arriba o hacia abajo con flechas y usar Y para copiar o D para cortar y th debería funcionar.

Comentarios

  • @Anthon, lo haré, gracias por la aclaración.
  • reformulé tu auto- comentario pronunciado para que se parezca más a 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, comentar hubiera sido más apropiado.

Responder

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

Consulte la sección de notas en la parte inferior de la referencia:
Cuándo habilitando el mouse, los botones del mouse aún se pueden usar manteniendo presionada la tecla shift. Esto incluye copiar y pegar con 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. 

Comentarios

  • 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?

Respuesta

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

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

Respuesta

Use estas dos líneas a continuación en su ~/.vimrc para usar todas las características agradables de un gui-mouse y péguelas en el portapapeles del sistema usando y (tecla de arrastre) si realmente no necesita ningún búfer de portapapeles adicional :

set mouse=a set clipboard=unnamed 

Respuesta

Puede usar y para copiar (yank) y p para pegar incluso con :set mouse=a configurado en ~/.vimrc. Utilice v + arrow keys para resaltar el texto. Para copiar una línea completa rápidamente, use shift + y .

Responder

Como f o la segunda parte de su pregunta donde 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»

Responder

Dos cosas para agregar:

  1. Tenga en cuenta que muchas veces set mouse=v no funcionará como se esperaba dependiendo de la otras directivas que haya establecido antes o después en su archivo .vimrc, también depende de la terminal desde la que esté ejecutando vim;
  2. Recomendaría mantener mouse=a para que tenga todo el modo de mouse habilitado al mismo tiempo y use el truco propuesto por @BHS para resaltar el texto mientras presiona la tecla Shift cuando necesita pegar el texto resaltado con el mouse central button ( Copiar texto fuera de Vim con set mouse=a habilitado ).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *