Est-il possible de copier dans le presse-papiers directement depuis Vim? yy
copie uniquement les éléments dans le tampon interne de Vim. Je veux copier dans le presse-papiers du système d'exploitation. Existe-t-il une telle commande dans Vim ou vous ne pouvez que tirer des trucs dans Vim?
753
sudo apt-get install vim-gnome
avant d'appliquer ces commandes ci - dessous ou vous obtiendrez une erreur d'enregistrement incorrect!vim-gnome
est probablement exagéré ou simplement indisponible dans leur système d'exploitation / distribution, alors que je soupçonnevim-gtk
et de préférencevim-gtk3
est plus susceptible d'exister et de tirer moins de dépendances, tout en offrant une intégration du presse-papiers (au moins pour ceux qui sont encore sur X11; Je ne sais pas comment tout cela interagit avec Wayland).Réponses:
Le
*
registre fera cela. Sous Windows,+
et*
sont équivalents. Sous Unix, il y a une différence subtile entre+
et*
:*
est probablement ce que vous voulez la plupart du temps, donc je l'utilise*
car il fonctionne comme je l'attends dans les deux environnements.Dans les distributions Linux, vous devez d'abord installer
vim-gtk
(akagvim
) pour obtenir la fonctionnalité du presse-papiers. Cela est dû au fait que les vim non gtk sont généralement compilés sans le support de X11. C'est pour lui permettre de fonctionner sur des machines console uniquement (souvent des serveurs).Et pour ceux qui ne savent pas comment utiliser les registres en tirant ou en mettant, vous écrivez simplement
"
le nom du registre. Donc, pour copier quelque chose dans le presse-papier, vous tapez"*y
et puis vous mettez votre texte"*p
(crédit: Kyle Mathews)la source
vim --version|grep .xterm_clipboard -o
et si c'est le cas,-
vous n'avez pas de support. Téléchargez une version différente selon ubuntuforums.org/showthread.php?t=1686955+
inscrire. Par exemple, si vous voulez copier trois lignes dans le presse-papiers du système, utilisez des commandes commev3j"+y
, puis vous pouvez les coller dans une autre application plus un autre VIM. L'utilisation de*
Register sous Linux peut uniquement copier et coller entre différentes applications VIM.Sur Mac OSX
copier la partie sélectionnée: sélectionner visuellement le texte (taper
v
ouV
en mode normal) et taper:w !pbcopy
copier tout le fichier
:%w !pbcopy
coller depuis le presse-papiers
:r !pbpaste
Sur la plupart des Distros Linux , vous pouvez remplacer:
pbcopy
ci-dessus avecxclip -i -sel c
ouxsel -i -b
pbpaste
en utilisantxclip -o -sel -c
ouxsel -o -b
- Remarque: Si aucun de ces outils (
xsel
etxclip
) n'est préinstallé sur votre distribution, vous pouvez probablement les trouver dans le référentiella source
vim --version
montre-clipboard
vnoremap <C-c> :w !pbcopy<CR><CR> noremap <C-v> :r !pbpaste<CR><CR>
Pour utiliser ce mappage, si vous souhaitez copier, mettez en surbrillance le texte en mode visuel et appuyez sur Ctrl-c pour copier. Pour coller à partir du presse-papiers du système, appuyez sur Ctrl-v.vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
Dans votre fichier vimrc, vous pouvez spécifier d'utiliser automatiquement le presse-papiers du système pour copier et coller.
Sous Windows:
Sous Linux (vim 7.3.74+):
REMARQUE: vous devrez peut-être utiliser une version à jour de Vim pour que cela fonctionne.
http://vim.wikia.com/wiki/Accessing_the_system_clipboard
la source
+xterm_clipboard
fonctionnalité (visible lorsque vous exécutezvim --version
). Ce fut le cas pour moi (exécutant Kubuntu 12.10). J'ai dû installer levim-gui-common
package pour obtenir les fonctionnalités correctes.set clipboard=unnamed
fonctionne sous Mac OS 10.11.6 (El Capitan) avec vim 7.4set mouse=v
etset clipboard=unnamed
set clipboard=unnamed
fonctionne sur MacOS CatalinaUtilisez le registre
"+
pour copier dans le presse-papiers du système (c'est-"+y
à- dire au lieu dey
).De même, vous pouvez coller depuis
"+
pour obtenir le texte du presse-papiers du système (c'est-"+p
à- dire au lieu dep
).la source
+
/*
estSELECTION
vs lesPRIMARY
tampons de copie (ne me souviens pas quel est quel atm)"+yy
(copier la ligne dans le presse-papiers) et"+yy
(copier la ligne dans la sélection);"+p
(coller depuis le presse-papiers) et"*p
(coller depuis la sélection)."
est de sélectionner le registre qui est le propre registre interne de vim par défaut (la manièreyy
etp
fonctionnerait sans référencer aucun type de registre). PS: je me demande s'il y a un personnage pour le propre registre interne de Vim, quelque chose comme"&yy
qui se tourneyy
par défaut.@Jacob Dalton l'a mentionné dans un commentaire, mais personne ne semble avoir mentionné dans une réponse que vim doit être compilé avec le support du presse-papiers pour que l'une des suggestions mentionnées ici fonctionne. Le mien n'était pas configuré de cette façon sur Mac OS X par défaut et j'ai dû reconstruire vim. Utilisez cette commande pour savoir si vous l'avez ou non
vim --version | grep 'clipboard'
.+clipboard
signifie que vous êtes bon et que les suggestions ici fonctionneront pour vous, alors-clipboard
que vous devez recompiler et reconstruire vim.la source
brew install vim
. Sur Ubuntu, vous pouvez utilisersudo apt-get install vim-gnome
. Sur d'autres distributions Linux (non GNOME), vous pouvez plutôt installervim-gtk
ouvim-athena
.vim
et installergvim
wiki.archlinux.org/index.php/Vim#Installationbrew install vim
avoir ajoutéset clipboard=unnamed
à .vimrc. Exécutersource ~/.vimrc
en ligne de commande. Dans .bash_profile, j'ai ajoutéalias vim="/usr/local/bin/vim"
puis exécutésource ~/.bash_profile
. Maintenant dans vim il suffit d'utilisery
etp
de copier / collerRésumer et le rendre plus facile pour les débutants,
Pour copier la ligne actuelle, en mode commande, tapez:
Pour copier tout le fichier / tampon, en mode commande, allez d'abord au début via
gg
, puis tapezComme indiqué, cela nécessite
+clipboard
devim --version
, ce qui indique la disponibilité du support presse-papiers,-clipboard
signifie non.la source
"*5yy
dit5 lines yanked
mais rien dans le presse-papiers? os / x.nnoremap <leader>c "*
en.vimrc
fonctionne très bien comme une "copie" en quelque sorte, suivie d'un mouvement pour saisir l'objet texte que vous souhaitez copier dans le presse-papiers de votre système d'exploitation.vim-gtk
pour-clipboard
devenir+clipboard
, que"+yy
fonctionne.Si vous utilisez vim dans MAC OSX, malheureusement, il est livré avec une version plus ancienne et non conforme aux options du presse-papiers. Heureusement, les homebrews peuvent facilement résoudre ce problème.
installez vim:
brew install vim
installez gui verion de vim:
brew install macvim
redémarrez le terminal pour prendre effet.
ajoutez la ligne suivante à ~ / .vimrc
set clipboard=unnamed
vous pouvez maintenant copier la ligne dans vim avec
yy
et la coller à l'échelle du système.Méthode mise à jour :
Je n'ai jamais été satisfait de la méthode de sélection du presse-papiers pendant des années. Le plus gros inconvénient est qu'il gâchera votre historique du presse-papiers, même lorsque vous l'utiliserez
x
pour la suppression. Voici une solution meilleure et plus élégante.Copiez le texte [plage] de vim dans le presse-papiers du système. (Astuce: utilisez
v
ouV
pour sélectionner la plage en premier, puis tapez les deux points:
pour activer la commande Ex)::[line-range]yank +
par exemple,
:5,10y *
(copiez / tirez les lignes 5-10 dans le*
registre du presse-papiers du système )Collez le contenu du presse-papiers du système dans vim sur une nouvelle ligne:
:put +
Remarque:
brew info vim
pourra voir d'autres options pour installer vim. Actuellement, il n'a pas d'autres options.la source
--with-override-system-vim
devrait être--with-override-system-vi
Pour Ubuntu - juillet 2018
Utilisez le registre "+ pour copier dans le presse-papiers du système (c'est-à-dire " + y au lieu de y ).
De même, vous pouvez coller à partir de "+ pour obtenir le texte du presse-papiers du système (c'est-à-dire " + p au lieu de p ).
Vous devez également vous assurer que vim est compilé avec le support du presse-papiers. Essayer:
et si c'est -xterm_clipboard (un préfixe moins), alors vous ne le faites pas support.
Voici quelques instructions pour échanger avec une version de travail de vim qui prend en charge le presse-papiers.
Vérifiez à nouveau avec
vim --version | grep .xterm_clipboard -o
et vous pouvez confirmer que le presse-papiers est désormais disponible (par exemple + xterm_clipboard )Bonne chance.
la source
set clipboard=unnamedplus
mon.vimrc
dossier pour que le coup sec fonctionne. J'utilise Ubuntu 18.04.Je n'ai pas pu copier sur le système de mon presse-papiers car j'avais ceci dans mon fichier ~ / .vimrc:
Mais si vous ajoutez cette ligne ensuite, cela vous permettra simplement Ctrl+c d'obtenir tout ce que vous avez sélectionné dans votre presse-papiers.
Discussion originale et plus de détails: Copiez le texte de vim avec set mouse = a enabled
la source
la solution pour moi était d'installer un vim supplémentaire avec l'option presse-papiers incluse:
la source
"+y
suggestion n'a fonctionné qu'avecvim-gnome
. Utilisation de Linux Mint 18.2.Si vous utilisez GVim, vous pouvez également
set guioptions+=a
. Cela déclenchera une copie automatique dans le presse-papiers du texte que vous mettez en surbrillance en mode visuel.Inconvénient: Notez que les gestionnaires de presse-papiers avancés (avec historique) obtiendront dans ce cas tout votre historique de sélection…
la source
Vous pouvez trouver les réponses ici Arch Wiki
Pour Linux: Tout d'abord, vous devez activer Clipboard dans votre version vim en installant
gvim
.Ensuite, vous devez mettre cette ligne dans votre
.vimrc
fichier.set clipboard=unnamedplus
la source
Si votre vim se trouve être compilé sans
+xterm_clipboard
option comme c'est le cas par défaut dans Debian et je suppose Ubuntu, vous pouvez diriger la sélection ou tout le tampon vers un programme externe qui gère le presse-papiers du bureau. Pourxclip
(que vous devrez peut-être installer précédemment), la commande sera:w !xclip -sel clip
la source
-xterm_clipboard
dans les drapeaux montrés quand jevim --version
.Dans vim sous le terminal ubuntu uniquement,
appuyez
shift + drag mouse
pour sélectionner un texte dans vim puisctrl + shift + c
sur le terminalpuis
ctrl + v
sur un autre éditeurla source
Si vous avez xclip, un moyen simple de copier du texte dans le presse-papiers est le suivant:
y
commande dans vanilla vim):call system("xclip -selection clipboard", @")
:call system()
exécute une commande de terminal. Il prend deux arguments, le premier la commande, le second quoi diriger vers cette commande. Par exemple,:echom system("head -1", "Hello\nWorld")
renvoie Hello (avec un peu de remplissage). echom renvoie la sortie d'une commande, l'appel ne le fait pas.xclip -selection clipboard
copie simplement le texte dans le presse-papiers du système par opposition au presse-papiers X par défaut, (accessible par le bouton central de la moue).@"
renvoie le dernier texte retiré. "est le registre par défaut, mais vous pouvez utiliser n'importe quel registre. Pour voir le contenu de tous les registres, tapez:registers
.la source
:call system("pbcopy",@")
. On peut lier cette commande à une clé.Cette réponse est spécifique aux utilisateurs MAC.
Le VIM par défaut disponible avec MAC ne vient pas avec l'option presse-papiers activée. Vous avez besoin de cette option pour accéder au presse-papiers du système.
Pour vérifier si votre vim a cette option activée, utilisez la commande ci-dessous
En fin de compte, vous auriez dû
+clipboard
. Si c'est le cas-clipboard
, votre VIM n'a PAS la possibilité d'accéder au presse-papiers du système.Vous devez FAIRE et installer votre VIM avec l'option dont vous avez besoin. Voici les commandes.
Ce qui précède installera le dernier VIM avec l'option
+clipboard
activée.Vous devez maintenant définir le presse-papiers du système. Ajoutez la ligne suivante à
~/.vimrc
Vous pouvez maintenant tirer du texte dans le presse-papiers du système. Les étapes ci-dessous expliquent comment tirer.
press v
, cela vous fera passer en mode VISUAL.Press y
, cela copiera le texte sélectionné dans le presse-papiers.CMD + v
collez.J'utilise MACBook Pro avec macOS Mojave et les éléments ci-dessus y sont intégrés.
la source
Peut-être que quelqu'un le trouvera utile. Je voulais rester indépendant du presse-papiers X et pouvoir toujours copier et coller du texte entre deux vims en cours d'exécution. Ce petit code enregistre le texte sélectionné dans le fichier temp.txt pour la copie. Mettez le code ci-dessous dans votre .vimrc. Utilisez CTRL-c CTRL-v pour effectuer le travail.
vnoremap: w! cp / dev / null ~ / temp.txt && cat> ~ / temp.txt
noremap: r! cat ~ / temp.txt
la source
set clipboard=unnamed
votrevimrc
.Visual
mode (appuyez sur v pour entrer).Normal
mode (Appuyez sur échap [esc]), appuyez sur y pour copier.Normal
mode Vim .la source
Je suis un Vim newby mais, pour copier tout le texte dans le presse-papiers du système (par exemple si vous voulez le coller dans un traitement de texte ou un autre éditeur de texte comme gedit, mousepad etc ...), en mode normal:
ggVGy
ou, plus simplement:
:% y
Comme suggéré, j'ai également installé vim-gtk et mis
définir le presse-papiers = unlamedplus
dans mon .vimrc
et tout fonctionne bien
Si vous ne souhaitez copier qu'une partie du texte, utilisez le mode visuel (v) , sélectionnez le texte que vous souhaitez copier et appuyez sur y .
Enfin, je suggère un programme de presse-papiers comme Clipman (mon préféré), Clipit, Parcellite ou similaire.
(J'utilise vim 8.0 dans Debian Stretch Xfce)
Pardonnez-moi pour mon anglais! :-)
la source
J'ai eu un problème car mon vim ne supportait pas le presse - papiers :
J'ai installé vim-gnome (qui prend en charge le presse-papiers), puis vérifié à nouveau:
Maintenant, je peux copier et coller en utilisant respectivement "+ y et" + p.
la source
Cela fait des mois que je me bats avec MacOsX en utilisant des raccourcis clavier. Je sais que la question n'est pas d'utiliser des shorts de clavier. Mais cela pourrait aider quelqu'un avec le même souci.
J'ai trouvé que si vous décochez:
depuis le menu Terminal, vous pourrez copier dans le presse-papiers en utilisant
encore.
la source
J'ai écrit une ligne simple dans mon .vimrc pour faire fonctionner la copie. J'espère que cela aide quelqu'un. Mon vim n'est pas installé avec le support Clipboard, malheureusement, donc aucune de ces suggestions n'a fonctionné pour moi. En gros, collez cette ligne dans votre .vimrc:
Si vous souhaitez lire les détails de ce que cela fait, vous pouvez en lire plus sur mon blog
la source
Pour certains claviers internationaux, vous devrez peut-être appuyer sur "+ Spacepour obtenir un
"
.Donc, dans ce cas, vous devrez appuyer sur "Space+you"Space*y
la source
Dans le cas où vous ne souhaitez pas utiliser d'interface graphique pour vim et que vous préférez simplement vous en tenir à l'émulateur de terminal, il peut y avoir une approche beaucoup plus simple à ce problème. Au lieu d'utiliser yank ou quelque chose comme ça, jetez d'abord un œil à la documentation du terminal que vous utilisez. J'ai eu du mal avec le même problème (essayer d'utiliser + presse-papiers et xclip et ainsi de suite) et à la fin, il s'est avéré que dans mon émulateur de terminal, il suffit d'appuyer sur Maj et de sélectionner le texte que vous souhaitez copier. C'est ça. Assez simple et pas besoin de jouer avec la configuration. (J'utilise urxvt d'ailleurs).
la source
pour OSX, comme les réponses 10342 ci-dessus l'ont clairement indiqué, vous devez vous assurer que vim prend en charge la fonction de presse-papiers, a déclaré que celui qui est livré avec OSX ne prend pas en charge le presse-papiers, et que si vous l'exécutez,
brew install vim
cela fonctionnerait.Sauf que l'exécution de vi vous fera toujours exécuter la version OSX pré-expédiée, pas celle que vous avez installée à partir de l'infusion.
pour surmonter cela, j'ai simplement aliasé ma commande vim en version brew, pas celle par défaut d'OSX:
et maintenant je suis en or
la source
Ma solution consistait à mettre la ligne suivante en .vimrc:
Le script copie la ligne sélectionnée (en mode visuel) ou le contenu du fichier (si aucun n'est sélectionné) dans le presse-papiers à l'aide de Ctrl + y. J'utilise Manjaro Linux si cela importe.
la source
Je suis sur mac osx (10.15.3) et nouveau sur vim. J'ai trouvé cela tellement frustrant et toutes les réponses ici trop compliquées et / ou ne s'appliquent pas à ma situation. J'ai fini par faire fonctionner cela de 2 façons:
mappage de clés qui utilise pbcopy : fonctionne sur l'ancienne version de vim fournie avec mac.
Installez une version plus récente de vim pour pouvoir accéder à la solution la plus recommandée dans les autres réponses:
la source
selecting
avec l'aide de lamouse
et aright-click copy
travaillé dans mon cas.Je ne voulais pas que les numéros de ligne soient inclus, donc
:set nonumber
avantcopying
.la source
Rien ci-dessus n'a fonctionné pour moi sur mon ordinateur portable Windows.
Ctrl+ Cétait bien pour copier .. mais j'avais besoin Shift+ Insertde coller!
(Une bonne raison d'avoir toujours un ordinateur portable où l' Inserton peut toujours accéder sans appuyer sur une touche secondaire)
la source
Shift+ Ctrl+ C si vous êtes en mode graphique de Linux, mais vous devez d'abord sélectionner ce que vous devez copier.
la source