Existe-t-il un moyen de copier un bloc de texte dans le Presse-papiers du système pour que je puisse le coller dans un autre programme?
cut-copy-paste
os-clipboard
thameera
la source
la source
cpip
,cpi{
.Réponses:
Pour les systèmes basés sur X11 (c'est-à-dire Linux et la plupart des systèmes similaires à UNIX ), il existe deux presse-papiers indépendants l'un de l'autre:
^C
, et collé avec^V
(c'est comme MS Windows).Les systèmes OS X et Windows ne possèdent qu'un seul presse-papiers.
Pour les systèmes X11, de nombreux outils synchronisent ces presse-papiers à votre place. alors, si elles semblent être les mêmes, vous pouvez en avoir un en cours d'exécution.
Vim a deux registres spéciaux correspondant à ces presse-papiers:
*
utilise PRIMARY; mnémonique: S goudron est S élu (pour copie sur des élus)+
utilise CLIPBOARD; mnémonique: CTRL PLUS C (pour le keybind commun)Sous Windows et OS X, il n'y a pas de différence entre
+
et*
, car ces systèmes ne possèdent qu'un seul presse-papiers et que les deux registres font référence à la même chose (peu importe celui que vous utilisez).Vous pouvez utiliser ces registres comme n'importe quel registre. Par exemple, en utilisant le presse-papiers PRIMARY
*
avec les commandesy
etp
:"*yy
"*p
Vous pourriez peut-être utiliser ceci comme une liaison plus pratique:
Si vous souhaitez "automatiquement" vous connecter au presse-papiers du système au lieu de le consulter manuellement tout le temps, vous pouvez définir la
clipboard
variable:unnamed
utiliser*
(PRIMARY, on select)unnamedplus
utiliser+
(CLIPBOARD,^C
)Maintenant, simplement utiliser
yy
ira dans le presse-papiers du système, au lieu du registre sans nom de Vim, etp
collera le presse-papiers du système.Vous pouvez aussi assigner à ces registres comme n'importe quel registre avec
let
::let @+=42
:let @*=42
Le
clipboard
paramètre comporte quelques options supplémentaires (telles que les filtres d’exclusion); mais ce sont les bases. Voir:help 'clipboard'
pour l'histoire complète ;-)gVim
Si vous utilisez gVim, vous pouvez obtenir un comportement de copie sur sélection lors de l'utilisation
:set guioptions+=a
.Cette option est activée par défaut sur les systèmes X11 (copies sur PRIMARY), mais pas sur MS Windows et OSX (car la sélection de texte remplacerait le presse-papiers).
Non
+clipboard
?Vim a besoin de l'
+clipboard
indicateur de fonctionnalité pour que cela fonctionne; vous pouvez vérifier si votre Vim a cela en utilisant:echo has('clipboard')
depuis Vim (si la sortie est0
, elle n'est pas présente, si c'est le cas1
) ou en vérifiant la sortie devim --version
pour+clipboard
.La plupart des distributions Linux sont livrées avec une version "minimale" de Vim par défaut
+clipboard
, mais vous pouvez généralement l'installer:vim-gtk
ouvim-gnome
.vim-X11
et exécuter à lavimx
place devim
( plus d'infos ).gvim
(cela+clipboard
activeravim
aussi normalement ).Vous pouvez également utiliser
xclip
,xcopy
ouxsel
pour copier du texte dans le presse-papiers; voir les questions suivantes pour des solutions:SSH
Vous pouvez également utiliser un presse-papiers sur des ordinateurs distants si vous activez le transfert X11 via SSH. Ceci est particulièrement utile avec l’astuce ci-dessus puisque vous pouvez ensuite utiliser
xclip
pour accéder au Presse-papiers de votre bureau. Le Vim sur la machine à laquelle vous êtes connecté aura toujours besoin de cette+clipboard
fonctionnalité.Cela nécessite la
ForwardX11Trusted
configuration et ne devrait être effectué qu'avec des serveurs de confiance , car cela donne au serveur un contrôle presque complet sur votre session X11:Pour rendre ces paramètres persistants (vous n'avez donc pas besoin d'ajouter à
-XY
chaque fois), vous pouvez faire quelque chose comme ceci dans votre~/.ssh/config
:Neovim
Neovim a réorganisé le support du presse-papiers. L'interface intégrée a été retiré et remplacé par un système qui appellent un utilitaire externe tel que
xclip
,xsel
oupbcopy
/pbpaste
.Il devrait automatiquement ramasser ces utilitaires et les utiliser. Sous OS X
pbcopy
etpbpaste
devrait être disponible par défaut, sous Linux, vous voudrez probablement l'installerxclip
, car c'est la version la plus largement disponible (il existe en fait deux versionsxsel
avec des indicateurs incompatibles . C'est vraiment stupide).Voir aussi
:help clipboard
dans Neovim.la source
"<Space>
pour obtenir un"
. Donc, dans ce cas, vous devrez appuyer"<Space>+y
ou"<Space>*y
copier."
permet de sélectionner de nombreux registres nommés."+
n'est pas magique, il suffit de vous inscrire+
. Ainsi , par exemple, si vous voulez copier trois choses en même temps et coller chacun d'eux un par un, vous pouvez"1y
,"2y
et"3y
plus tard"1p
,"2p
et"3p
. C'est vraiment puissant et inexistant dans presque tous les autres éditeurs. Une autre utilisation intéressante est de regarder les macros stockées. Par exemple, si vous enregistrez avecqq
, mais que vous réalisez que vous devez le réparer, vous pouvez: dans une ligne temporaire"qp
, le corriger, et"qd
.Les autres réponses expliquent comment copier du texte de votre tampon dans le presse-papiers du système. Une autre opération courante consiste à copier du texte d'un autre registre dans le presse-papiers. Par exemple, si vous avez déjà inséré du texte dans
"
(le registre par défaut), vous pouvez charger ce registre dans le presse-papiers.Vous pouvez le faire avec
:let
:let @+=@"
- copie le registre par défaut dans le presse-papierlet @*=@"
- copie le registre par défaut dans la sélection primaire X11 ("presse-papiers de la souris")let @+=@a
- copie du registrea
dans le presse-papierNotez que cela fonctionne pour les registres en général: les
let @a=@b
copies s'enregistrentb
pour s'enregistrera
.la source
De http://vim.wikia.com/wiki/Accessing_the_system_clipboard
Cela change le registre Vim par défaut en
+
registre, qui est lié au presse-papiers du système. De:h clipboard-unnamedplus
:la source
:version
Vim pour voir si + X11 apparaît dans la liste des fonctionnalités incluses. Vous pouvez également vérifier si la fonctionnalité 'unnamedplus' est disponible avec:if has('unnamedplus')⏎ echo 'yes'⏎ endif
Si vous n'êtes pas sous Linux, vous devez utiliser unnamed au lieu de unnamedplus.Sur les versions qui le prennent en charge, le registre nommé
*
est le presse-papiers du système. Pour copier du texte de Vim dans le presse-papiers du système, vous pouvez sélectionner le texte en mode visuel, puis appuyer sur "*ypour le copier dans le presse-papiers du système.Inversement, utilisez "*ppour coller du texte du presse-papiers du système dans Vim.
la source
Je vous recommande d'utiliser Gvim et de l'ajouter à votre
.vimrc
:Cela permet le support pour CtrlC, CtrlX, CtrlVcomme le bloc - notes dans Windows.
Notez que cela ajoutera également d’autres raccourcis Windows courants, tels que CtrlSpour
:w
, CtrlApour tout sélectionner, etc.la source
Si votre vim ne supporte pas,
+clipboard
vous pouvez utiliser le plugin fakeclip pour Linux, Mac, Windows, tmux, screen, ...la source
Chaque autre réponse a couvert toutes les choses importantes concernant les registres. J'aimerais ajouter une dernière chose que j'utilise.
Il existe un moyen dans Vim de copier directement le texte sélectionné visuellement dans le presse-papiers. Il suffit de mettre ceci dans votre fichier vimrc :
Et, avec cela, chaque fois que vous sélectionnez visuellement du texte, il sera copié dans votre presse-papiers. Pour plus d'informations à ce sujet,
:help guioptions
BTW, ceci est seulement pour gVim.
la source
guioptions+=a
est également mentionné dans la réponse de Carpetsmoker.Vous pouvez également utiliser une commande globale pour mettre un motif spécifique dans le presse-papiers. Cela peut être utile dans les cas où vous avez des informations dispersées dans un fichier et que le traitement manuel est sujet aux erreurs et à la fatigue.
Commencez par nettoyer le registre qui recevra les informations
Puis copiez toutes les lignes contenant le motif
Enfin, transférer (copier) les informations dans le presse-papiers du système
si vous essayez de copier chaque ligne contenant un "motif" directement dans le presse-papier, cela ne fonctionnera pas car le presse-papier n'a pas la capacité d'ajouter un nouveau contenu. Nous utilisons donc ici un registre vim normal pour stocker toutes les lignes contenant le motif à la fois et ensuite le mettre sur le presse-papiers.
OBS: Il est nécessaire de nettoyer le registre avant de l'utiliser et l'utilisation de la version UPPERCASE du registre nous permet d'ajouter du contenu, sinon il ne fonctionnera pas non plus.
la source
Si vous ne savez pas comment vous rendre
+clipboard
au travail, ce que je ne pouvais pas pour une raison quelconque, vous pouvez le faire.En supposant que vous souhaitiez uniquement copier une section du fichier, je
shift
+v
passe en mode visuel et ne met en évidence que les lignes que je souhaite copier. Alors je fais ça.Explication
'<,'>
- signifie que vous avez utilisé le mode visuel pour sélectionner une plage (vous ne tapez pas ceci)w !{cmd}
- écrivez la plage au stdin decmd
, voyez plus à:help w_c
wl-copy
etxclip
sont des programmes que vous pouvez diriger du texte vers et ils vont l'ajouter à votre presse-papiers systèmeEn outre, une fois que cela est dans votre histoire, vous n'avez pas à taper à nouveau le tout. Il suffit de sélectionner avec le mode visuel, tapez
w
puis appuyez sur et la commande doit compléter automatiquement. De plus, vous n’avez pas à utiliser le mode visuel. Vous pouvez définir ce que vous voulez.la source