web-dev-qa-db-fra.com

Copier du texte en dehors de Vim avec set mouse = a enabled

Après avoir activé set mouse=a, le texte copié dans Vim ne sera pas collé en dehors de Vim. Est-ce que quelqu'un connaît un moyen de résoudre ce problème?

Ici, sélectionner du texte avec la souris active le mode visuel et désactive l'option Copy dans le menu contextuel:

enter image description here

193
lyuba

Presse shift 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é.

Remarque: cette astuce s'applique également à "coller du bouton central": si vous souhaitez coller du texte vim sélectionné à l'extérieur, appuyez sur shift en cliquant sur le bouton du milieu. Assurez-vous simplement que le mode d’insertion est activé lorsque vous faites cela (vous pouvez également vouloir :set paste pour éviter des effets inattendus).

OS X (mac): maintenez alt/option en sélectionnant ( source )

385
François

Utilisation "+y. De toute façon, vous ne devriez pas utiliser la commande de copie du terminal, car elle copie ce que le terminal voit à la place du contenu réel.

Vous pouvez le mapper comme ceci:

:vmap <C-C> "+y

Puis mettez en surbrillance quelque chose avec la souris et appuyez sur Control-C pour le copier.

Cette fonctionnalité ne fonctionne que lorsque Vim a été compilé avec l'option +xterm_clipboard. Exécutez vim --version pour savoir si c'est le cas.

45
Josh Lee

Au lieu de set mouse=a, utilisez set mouse=r dans .vimrc

15
Nefeline

Sous OSX fn au lieu de shift.

13
ssasa

Sous Ubuntu, il est possible d’utiliser les liaisons copier-coller de X-Term dans VIM (Ctrl-Maj-C et Ctrl-Shift-V) sur du texte mis en évidence à l’aide de la touche Maj.

5
Marc Gibbons

Une autre option pour Mac OSX consiste à décocher View->Allow Mouse Reporting (ou à appuyer sur ⌘-R pour le basculer.) Cela vous permet de basculer entre l’interaction et la sélection de la souris, ce qui peut être utile lors de la sélection et du copier/coller tenir une touche de modification pour le faire.

Note pour multiligne avec numéros de ligne:

Les numéros de ligne sont généralement activés, ce qui permet également de copier les numéros de ligne si vous sélectionnez plusieurs lignes. Si vous souhaitez copier plusieurs lignes sans numéro de ligne, désactivez les numéros avec :set nonu. Vous pouvez ensuite :set nu pour les réactiver une fois la copie terminée.

5
reor

Vous pouvez utiliser :set mouse& dans la ligne de commande vim pour activer le copier/coller du texte sélectionné à l'aide de la souris. Vous pouvez ensuite simplement utiliser le bouton central de la souris ou shiftinsert pour le coller.

1
Madhu

Les paramètres de compilation avec lesquels vim a été compilé font partie du problème. vim --version les montre.

Dans OSX, le vim par défaut a -clipboard mais vous avez besoin de +clipboard

Sur osx, vous pouvez et devriez généralement, utilisez macvim. Vous pouvez faire brew cask install macvim Celui-là a +clipboard.

Eux vous aurez deux vims.

~$ ls -l /usr/bin/vim   <--- default vim
-rwxr-xr-x  1 root  wheel  1745984 15 Jul  2017 /usr/bin/vim

~$ ls -l /usr/local/bin/vim   <-- macvim, installed recently via that mentioned brew line. 
lrwxr-xr-x  1 Apple  admin  42 16 May 23:32 /usr/local/bin/vim -> /Applications/MacVim.app/Contents/bin/mvim
~$ 

lancer vim lancera macvim 'cos /usr/local/bin devrait être avant /usr/bin dans le chemin, bien que vous puissiez vérifier avec which vim.

lancer vim (pour exécuter macvim), c'est bien, mais vous voudrez peut-être mapper vi sur macvim 'cos, sinon vi sera sur vim par défaut! Vous pouvez réécrire ou supprimer (avec rm) et recréer le lien vi sym, avec ln. Et pour le faire sans erreur "opération non autorisée", vous devez (temporairement) désactiver SIL. https://Apple.stackexchange.com/questions/208478/how-do-i-disable-system-integrity- protection-sip-aka-rootless-sur-macos-os-x .

macvim a +clipboard comme indiqué par vim --version

Voici un ~/.vim/vimrc avec seulement les lignes requises.

:set mouse=a
:map <leader>c "+y
:map <leader>v "+p

La clé de chef de file par défaut est une barre oblique inverse.

J'ai lu une suggestion selon laquelle on devrait utiliser la clé de chef .. (le contrôle a certainement de nombreuses clés déjà utilisées, il a donc été suggéré de ne pas utiliser le contrôle. Je ne sais pas si cela s'applique aussi à la clé de commande, mais quoi qu'il en soit).

Avec ce mappage mentionné, \c fera "+y qui copiera du registre appelé + dans le presse-papiers. Et \v va coller à partir du registre appelé +.

Donc, c'est un copier/coller qui fonctionne entre les fenêtres.

Un autre système d'exploitation peut nécessiter "* plutôt que "+

0
barlop

Si vous utilisez PuTTY session, il copie automatiquement la sélection . Si nous avons utilisé l'option "set mouse = a" dans vim, la sélection à l'aide de la combinaison de Maj + souris permet de sélectionner le texte automatiquement . -terme.

0
Amitesh Anand

em ... Continuez à appuyer Shift puis cliquez avec le bouton droit de la souris

0
levinit

J'ai accidentellement expliqué comment désactiver set mouse=a lorsque j'ai relu la question et découvert que l'OP ne souhaitait pas l'éteindre. Quoi qu'il en soit, pour ceux qui cherchent à éteindre la souris (set mouse=) de manière centralisée, je laisse une référence à ma réponse ici: https://unix.stackexchange.com/a/506723/194822

0
Holger Böhnke