web-dev-qa-db-fra.com

Le copier-coller pour vim ne fonctionne pas lorsque la souris (: set mouse = a) est activée?

J'essayais de copier coller quelque chose de vim vers une autre application et aussi, de cette application vers vim en utilisant le clic droit avec la souris puis en copiant et collant (ou avec Ctrl+v et Ctrl+c et a également essayé le Command version pour mac OSX, évidemment.). Cependant, lorsque j'essaie de le faire, il copie uniquement le premier mot lorsque je le fais à partir de vim ou lorsque je copie de l'application vers vim, il copie tout, mais insère des tabulations et des espaces étranges . Je pense que cela s'est produit lorsque j'ai décidé d'allumer ma souris dans le terminal. Un péché:

:set mouse=a

J'ai cette ligne sur mon .vimrc fichier sur iTerm (mac os x). Cependant, est-il possible de faire ma copie avec d'autres applications qui ne sont pas dans vim pour ne pas rompre avec mouse=a sur? Ou est-il au moins possible de désactiver ma souris pendant que je fais le copier-coller? J'ai fait :help souris mais les commentaires ne m'ont pas été utiles. Je les collerais ici mais ... mon outil de copier-coller est cassé!

J'ai essayé :set mouse! et :set mouse=a! mais cela n'a rien d'utile ... :(


Informations supplémentaires sur mon environnement:

J'utilise également tmux la plupart du temps, cependant, j'ai testé cette erreur/bogue sans session tmux, c'est pourquoi j'ai posté cela principalement comme une question vim.

55
Pinocchio

mouse=a empêche la possibilité de copier et coller hors de vim avec des caractères lisibles.

Changement mouse=a à mouse=r et cela devrait résoudre votre problème.

une chose que je me demande, est-ce que vous changez le fichier de configuration pour votre vim avec la souris réglée sur mouse = a?

réponse d'origine ^

Si mouse=r ne vous donne pas toutes les options de copie passée, changez-le en mouse=v

Tous les deux mouse=r et mouse=v ont les mêmes fonctions que celles dont vous avez besoin, mais selon le vimrc que vous utilisez, l'un fonctionnera mieux que l'autre.

72
bgrif

Pour les utilisateurs d'OS X: pour copier-coller avec mouse=a utilisation alt au lieu de Shift pour sélectionner le texte. alors cmd-c et cmd-v travailler comme prévu.

Trouvé cette réponse ici https://stackoverflow.com/a/4608387/671639 après beaucoup de recherches sur Google.

24
BetaRide

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

Appuyez sur la touche "Maj" tout en sélectionnant avec la souris. Cela fera que la sélection de la souris se comportera comme si mouse = a n'était pas activée.

Cela fonctionne et a été vérifié par les critiques de stack-overflow qui ont accepté cela comme réponse :)

10
BHS

Eu le même problème: impossible de mettre en surbrillance à l'aide de la souris, donc impossible de copier et coller à partir de VIM dans une session de terminal vers un document et un navigateur Windows: a fait ce qui suit et cela fonctionne maintenant:

: set clipboard=unnamedplus
: set mouse=r
7
Bob

solution de Bharath , en appuyant sur Shift lors de la copie, le fera, mais il copiera plus que ce que vous aimeriez copier en cas de numérotation ou de commentaires de hachage.

Une façon de le faire même avec mouse = a est d'utiliser le mode visuel en appuyant sur V pour un curseur unique ou Shift+V pour la mise en évidence de la ligne complète, et vous pouvez vous déplacer vers le haut ou vers le bas avec des flèches et utiliser Y copier ou D couper et ça devrait marcher.

6
amrx

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

Regardez la section Note au bas de la référence:
Lors de l'activation de la souris, les boutons de la souris peuvent toujours être utilisés en maintenant la touche Maj enfoncée. Cela inclut le copier-coller à l'aide des boutons de la souris.

*'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.
4
rabin utam

Vous pouvez utiliser y copier (yank) et p coller même avec :set mouse=a s'installer ~/.vimrc. Utilisation v+ arrow keys pour mettre le texte en surbrillance. Pour copier rapidement une ligne entière, utilisez shift+y.

1
Myna Martin

Sur mon Mac, ce qui a aidé, ce sont ces deux choses:

  • : set mouse- = a
  • fn + clic (au lieu de shift ou alt)
0
randomcontrol

Quant à la deuxième partie de votre question où vous avez spécifié que lors du collage à partir d'autres applications vers vim, il ajoute des tabulations/espaces. Essayez d'ajouter ceci à votre ~/.vimrc set paste ou dans vim avant de coller en mode normal appuyez sur "shift" + ":" et tapez "set paste"

0
abhixec

Deux choses à ajouter:

  1. Soyez conscient plusieurs fois set mouse=v ne fonctionnera pas comme prévu en fonction des autres directives que vous avez définies avant ou après dans votre .vimrc fichier, cela dépend aussi du terminal à partir duquel vous exécutez vim;
  2. Je recommanderais de garder mouse=a afin que tout le mode souris soit activé en même temps et utilisez l'astuce proposée par @BHS pour mettre en surbrillance le texte tout en appuyant sur la touche Maj lorsque vous devez coller le texte en surbrillance à l'aide du bouton central de la souris ( Copie de texte en dehors de Vim avec set mouse=a activé ).
0
Marco Tinari

Utilisez ces deux lignes ci-dessous dans votre ~/.vimrc pour utiliser toutes les fonctionnalités de Nice d'un gui-mouse et collez-le dans le presse-papiers du système en utilisant y (touche yank) si vous n'avez pas vraiment besoin de tampons supplémentaires dans le presse-papiers:

set mouse=a
set clipboard=unnamed
0
CeDeROM