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

53

J'essayais de copier-coller quelque chose de vim dans une autre application, puis d' vimutiliser cette application pour cliquer avec le bouton droit de la souris, puis de copier-coller (ou avec Ctrl+ vet Ctrl+ cet d'essayer la Commandversion pour Mac OSX, évidemment.). Cependant, lorsque j'essaie de le faire, il ne copie que le premier mot lorsque je le fais depuis vimou lorsque je copie depuis l'application vim, il copie tout, mais insère des tabulations et des espaces étranges. Je pense que cela est arrivé quand j'ai décidé de placer ma souris dans le terminal. Un péché:

:set mouse=a

J'ai cette ligne sur mon .vimrcdossier sur iTerm (Mac OS X). Bien, est - il possible de faire ma copie coller avec d' autres applications qui ne sont pas de vimne pas rompre avec le mouse=at -il ? Ou est-il au moins possible de désactiver ma souris pendant que je copie-coller? J'ai fait la :helpsouris 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 complémentaires de mon environnement:

J'utilise également tmux la plupart du temps, cependant, j'ai testé cette erreur / ce bogue sans session tmux, c'est pourquoi j'ai posté ceci principalement sous forme de question vim.

Pinocchio
la source
4
Je peux vous dire que vous êtes vimcapable de vous rapprocher de la sélection primaire en utilisant le yverbe. Je ne sais pas pourquoi vous ne l'utiliseriez pas.
HalosGhost
1
Je ne ferais pas cela parce que je ne sais pas comment faire cela, je suppose, excuse-moi pour mon incompétence. Je ne savais même pas que cela existait jusqu'à ce que vous en parliez. S'il vous plaît partager vos connaissances! :)
Pinocchio
Est-ce macvim ?
Patrick
non ce n'est pas juste son iTerm (comme je l'ai mentionné sur la question, mais bonne question cependant).
Pinocchio

Réponses:

67

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

Changer mouse=aà mouse=ret cela devrait résoudre votre problème avec cela.

Une chose que je me demande est la suivante: modifiez-vous le fichier de configuration de votre vim avec la souris réglée sur souris = a?

réponse originale ^

Si mouse=rne vous donne pas toutes les options de copie, changez-le enmouse=v

Les deux mouse=ret mouse=vont les mêmes fonctions que vous avez besoin, mais en fonction du vimrc que vous utilisez l'un fonctionnera mieux que l'autre.

bgrif
la source
Vous avez également essayé de surligner le texte et d'utiliser le bouton central de votre souris pour le placer à un autre endroit. cela a tendance à fonctionner mieux lorsque vous utilisez Ctrl + v et Ctrl + c
bgrif
Je ne sais pas ce que votre question veut dire: one thing I am wondering is, are you changing the config file for your vim with the mouse set to mouse=a?vous voulez dire si :mouse=amon fichier .vimrc est activé? J'ai :mouse=adans mon fichier .vimrc.
Pinocchio
1
juste --with-x=yes? Je n'ai pas besoin de mettre :set --with-x=yes mouse=aou quelque chose? Pourriez-vous clarifier ce que vous voulez dire?
Pinocchio
1
Permettez - moi de recherche si vous devez combiner --with-x=yespour set mouse=a. Quand j'ai lu tout ce que j'ai vu, c'est que c'était tout seul dans le fichier de configuration. Mais cela pourrait être différent, alors je veux m'assurer que je vous dise la bonne chose qui fonctionnera pour vous.
bgrif
1
Merci beaucoup, cette suggestion fonctionne comme un charme avec la souris = v
Pamungkas Jayuda
21

Pour les utilisateurs de OS X: Copier coller avec mouse=autiliser altau lieu de Shiftsélectionner le texte. Ensuite, cmd-cet cmd-vtravaillez comme prévu.

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

BetaRide
la source
Vous êtes Dieu ......: ')
omerjerk
la seule chose qui a fonctionné pour moi, merci!
Don
3
Pour moi sur OSX fonctionne "fn" au lieu de "shift" ou "alt".
Ssasa
6

La solution de Bharath , en appuyant sur Shiftlors de la copie, le fera, mais elle en copiera plus que ce que vous souhaitez copier en cas de numérotation ou de commentaires de hachage.

Une façon de le faire même avec souris = a consiste à utiliser le mode visuel en appuyant sur Vpour le curseur unique ou sur Shift+ Vpour une surbrillance de la ligne complète; vous pouvez vous déplacer vers le haut ou le bas avec des flèches et utiliser Ypour copier ou Dcouper et cela devrait fonctionner.

Amrx
la source
@ Anthony, va faire, Merci pour la clarification.
amrx
1
J'ai reformulé votre commentaire auto-prononcé pour le rendre plus semblable à une réponse, de sorte que les mods le laisseront probablement tel quel (et vous pourriez gagner une certaine réputation dessus pour pouvoir commenter). Si l'original avait été une correction plus mineure, les commentaires auraient été plus appropriés.
Anthon le
5

Avait le même problème: impossible de mettre en surbrillance à l'aide de la souris, donc ne peut pas copier et coller de VIM dans une session de terminal à un document Windows et un navigateur:

: set clipboard=unnamedplus
: set mouse=r
Bob
la source
4

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, vous pouvez toujours utiliser les boutons de la souris en maintenant la touche Maj enfoncée. Ceci inclut le copier / coller en utilisant les 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.
rabin utam
la source
1
Merci pour cette référence, mais répond-elle à la question ? Si oui, pouvez-vous identifier la partie de la citation qui le fait, en présentant un résumé de la réponse réelle?
G-Man dit 'Réintégrer Monica' le
0

En ce qui concerne la deuxième partie de votre question, vous avez précisé que lors du collage d’autres applications dans vim, elle ajoute des tabulations / espaces. Essayez d’ajouter ceci à votre ~ / .vimrc set paste ou à vim avant de coller en mode normal, appuyez sur "shift" + ":" et tapez "set paste"

Abhixec
la source
0

Vous pouvez utiliser ypour copier (yank) et pcoller même avec :set mouse=aset in ~/.vimrc. Utilisez v+ arrow keyspour surligner le texte. Pour copier rapidement une ligne entière, utilisez shift+ y.

Myna Martin
la source
0

Sur mon Mac, ces deux choses ont aidé:

  • : set mouse- = a
  • fn + click (au lieu de shift ou alt)
contrôle aléatoire
la source
0

Utilisez ces deux lignes ci-dessous ~/.vimrcpour utiliser toutes les fonctionnalités intéressantes de a gui-mouseet coller dans le presse-papiers du système en utilisant y(touche de raccourci) si vous n'avez pas vraiment besoin de tampons de presse-papiers supplémentaires:

set mouse=a
set clipboard=unnamed
CeDeROM
la source