Comment copier sur presse-papiers dans Vim?
est-il possible de copier sur presse-papiers directement à partir de Vim? yy
ne copie que des trucs dans le tampon interne de Vim. Je veux copier sur le bloc-notes du système D'exploitation. Est-il une telle commande dans Vim ou vous ne pouvez copier des trucs dans Vim?
26 réponses
le registre *
le fera. Dans Windows, +
et *
sont équivalents. Dans unix il y a une différence subtile entre +
et *
:
sous Windows, les registres * et + sont équivalentes. Pour les systèmes X11, cependant, ils diffèrent. Pour les systèmes X11, * est la sélection, et + est le tampon de coupe (comme le presse-papiers). http://vim.wikia.com/wiki/Accessing_the_system_clipboard
*
est probablement ce que vous voulez la plupart du temps, j'utilise donc *
parce qu'il fonctionne comme prévu pour dans deux environnements.
dans Linux distros, pour une raison quelconque, vous devez d'abord installer vim-gtk pour obtenir des fonctionnalités de presse-papiers.
et pour ceux qui ne savent pas comment utiliser les registres quand on tire ou met, il suffit d'écrire "
puis le nom du registre. Pour copier quelque chose dans le presse-papiers, tapez "*y
, puis "*p
et
on Mac OSX
-
copier la partie sélectionnée: sélectionner visuellement le texte (tapez
v
ouV
en normal mode) et le type:w !pbcopy
-
copier le fichier entier
:%w !pbcopy
-
coller le presse-papier
:r !pbpaste
Sur plus Linux Destros, vous pouvez remplacer:
-
pbcopy
ci-dessus avecxclip -i -sel c
ouxsel -i -b
-
pbpaste
utilisantxclip -o -sel -c
ouxsel -o -b
-- Note: dans le cas où aucun de ces outils (xsel
etxclip
) ne sont préinstallés sur votre distro, vous pouvez probablement les trouver dans les repos
Dans votre fichier vimrc vous pouvez spécifier pour utiliser automatiquement le presse-papiers pour copier et coller.
sous Windows:
set clipboard=unnamed
sous Linux set (vim 7.3.74+):
set clipboard=unnamedplus
NOTE: vous devrez peut-être utiliser une version à jour de Vim pour que cela fonctionne.
utilisez le registre "+
pour copier dans le bloc-notes système (i.e. "+y
au lieu de y
).
de même, vous pouvez coller à partir de "+
pour obtenir du texte à partir du bloc-notes du système (i.e. "+p
au lieu de p
).
@Jacob Dalton a mentionné ceci dans un commentaire, mais personne ne semble avoir mentionné dans une réponse que vim doit être compilé avec le soutien de bloc-notes pour l'une des suggestions mentionnées ici à travailler. La mienne n'était pas configurée de cette façon sur Mac OS X par défaut et j'ai dû reconstruire vim. Utilisez cette commande pour savoir si vous avez ou pas vim --version | grep 'clipboard'
. +clipboard
signifie que vous êtes bon et les suggestions ici travailleront pour vous, tandis que -clipboard
signifie que vous devez recompiler et reconstruire vim.
synthèse et de le rendre plus facile pour les débutants,
pour copier la ligne courante, en mode Commande type:
"*yy
pour copier l'ensemble du fichier / tampon, en mode commande, allez d'abord au début via gg
, puis tapez
"*yG
comme il a été noté, cela signifie que +clipboard
sur vim --version
, qui indique la disponibilité d'un support de presse-papiers, -clipboard
signifie N ° 151940920.
Je n'ai pas pu copier dans le système de mon presse-papiers parce que j'avais ceci dans mon ~/.fichiers vimrc:
if has('mouse')
set mouse=a
endif
mais si vous ajoutez cette ligne ensuite, il vous permettra tout simplement Ctrl + c pour obtenir tout ce que vous avez sélectionné dans votre bloc-notes.
vmap <C-c> "+y
discussion originale et plus de détails: Copie texte de vim avec jeu mouse=a activé
si vous utilisez vim dans MAC OSX, malheureusement il est livré avec verion plus ancien, et non conforme avec les options de presse-papiers. Heureusement, homebrew peut facilement résoudre ce problème.
installer vim:
brew install vim --with-lua --with-override-system-vim
install gui version de vim:
brew install macvim --with-lua --with-override-system-vim
redémarrer le terminal pour prendre effet.
ajouter la ligne suivante dans ~/.vimrc
set clipboard=unnamed
maintenant vous pouvez copier la ligne dans vim avec yy
et la coller à l'échelle du système.
Mise À Jour De La Méthode :
Je n'ai jamais été satisfait de la méthode du bloc-notes depuis des années. Le le plus gros inconvénient est qu'il va gâcher votre histoire de bloc-notes, même si vous utilisez x
pour la suppression. Voici une solution meilleure et plus élégante.
-
Copiez le texte [range] de vim dans le bloc-notes du système. (CONSEIL: Utilisez
v
ouV
pour sélectionner la portée en premier, puis tapez les deux-points:
pour activer la commande Ex):
:[range]yank +
par exemple,
:5,10y *
(copier/copier les lignes 5 à 10 pour le presse-papiers du système*
register) -
coller le contenu du bloc-notes système dans vim sur une nouvelle ligne:
:put +
la solution pour moi était d'installer vim supplémentaire qui a l'option presse-papiers inclus:
sudo apt-get install vim-gnome
si vous utilisez GVim, vous pouvez aussi set guioptions+=a
. Cela déclenchera la copie automatique au 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 toute votre histoire de sélection...
si votre vim est compilé sans l'option +xterm_clipboard
comme C'est le cas par défaut dans Debian et je suppose Ubuntu, vous pouvez choisir un calumet ou un tampon complet vers un programme externe qui gère le presse-papier du bureau. Pour xclip
(que vous pourriez avoir besoin d'installer auparavant), la commande sera :w !xclip -sel clip
Pour Ubuntu-Juillet 2018
utilisez le registre " + pour copier dans le bloc-notes système (i.e. "+y au lieu de y ).
de même vous pouvez coller de " + pour obtenir le texte du bloc-notes du système (i.e. "+p au lieu de p ).
vous devez aussi vous assurer tout paquets étrangers de dépendances vim du système)
vérifiez à nouveau avec vim --version | grep .xterm_clipboard -o
et vous pouvez confirmer que le presse-papiers est maintenant disponible (c.-à-d. +xterm_clipboard )
bonne chance.
peut-être que quelqu'un le trouvera utile. Je voulais rester indépendant de x clipboard, et être toujours capable de copier et coller du texte entre deux vims en cours d'exécution. Ce petit code enregistre le texte sélectionné dans temp.fichier txt pour copie. Placez le code ci-dessous dans votre .vimrc. Utilisez CTRL-c CTRL-v pour faire le travail.
vnoremap: w !cp / dev / null ~ / temp.txt & & cat.txt
noremap: r !cat ~ / temp.txt
- mettez
set clipboard=unnamed
dans votrevimrc
. - sélectionnez ce que vous voulez copier en mode
Visual
(appuyez sur v pour entrer). - retour au mode
Normal
(appuyez sur escape[esc]), appuyez sur y pour copier. - si vous voulez coller quelque chose du presse-papiers D'OS, appuyez sur p/P en mode Vim
Normal
.
si vous avez xclip un moyen facile de copier du texte dans le presse-papiers est le suivant:
- Copier le texte que vous souhaitez copier. ( "151900920 de la commande" à la vanille vim)
- Type
:call system("xclip -selection clipboard", @")
:call system()
exécute une commande de terminal. Il faut deux arguments, le premier la commande, le second quoi Piper à cette commande. Par exemple :echom system("head -1", "Hello\nWorld")
retourne Hello (avec un peu de rembourrage). echom renvoie le sortie d'une commande, pas d'appel.
xclip -selection clipboard
copie simplement le texte dans le presse-papiers système par opposition au presse-papiers X par défaut, (accessible par le bouton de la souris du milieu).
@"
renvoie le dernier texte tiré. "est le registre par défaut, mais vous pouvez utiliser n'importe quel registre. Pour voir le contenu de tous les registres, tapez :registers
.
Dans vim sous ubuntu terminal seulement,
appuyez sur shift + drag mouse
pour sélectionner un texte dans vim puis ctrl + shift + c
sur le terminal
puis ctrl + v
sur un autre éditeur
je suis un Vim newby, mais, à copier tout le texte presse-papiers du système (e.g si vous voulez le coller dans un traitement de texte ou un autre éditeur de texte comme gedit, tapis de souris etc...), en mode normal:
ggVGy
ou, plus simplement:
: %y
comme suggéré, j'ai également installé vim-gtk et mis
ensemble presse-papiers=unnamedplus
dans mon .vimrc
et tout fonctionne bien
Si vous voulez copier une partie seulement du texte, utilisez mode visuel (v) , sélectionnez le texte que vous souhaitez copier et appuyez sur y .
enfin, je suggère un programme de bloc-notes comme Clipman (mon préféré), Clipit, Parcellite ou similaire.
(j'utilise vim 8.0 dans Debian Stretch Xfce)
PARDONNEZ - MOI POUR MON ANGLAIS! :- )
j'ai écrit une ligne simple dans mon .vimrc pour obtenir une copie de travail. Espérons que cela aide quelqu'un. Mon vim n'est pas installé avec Support De Presse-papiers, malheureusement, donc aucune de ces suggestions n'a fonctionné pour moi. Fondamentalement, coller cette ligne dans votre .vimrc:
map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>
si vous souhaitez lire les détails sur ce que cela fait, vous pouvez lire à ce sujet sur mon blog
Pour certains claviers internationaux, vous devrez appuyer sur " + l'Espace pour obtenir un "
.
Donc, dans ces cas, vous devrez appuyer sur " l'Espace + y ou " l'Espace * y
dans le cas où vous ne voulez pas utiliser une interface graphique pour vim et vous préférez simplement coller avec 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 oeil à la documentation du terminal que vous utilisez. J'ai été aux prises 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 de presser majuscules et sélectionner n'importe quel texte que vous voulez copier. C'est tout. Assez simple et pas besoin de jouer avec la configuration. (J'utilise urxvt par la voie).
si vous vous connectez au système unix par putty, suivez les étapes ci-dessous pour copier le contenu d'un fichier
- texte en surbrillance que vous voulez copier ( vous pourrez copier page par page)
- appuyez sur ctrl+c (il copiera le texte au bloc-notes
- coller dans n'importe quel éditeur externe Fait à
selecting
avec l'aide des mouse
et right-click copy
travaillé dans mon cas.
Je ne voulais pas que les numéros de ligne soient inclus donc je :set nonumber
avant copying
.
j'ai eu un problème parce que mon vim ne supportait pas bloc-notes :
vim --version | grep clip
-clipboard +insert_expand +path_extra +user_commands
+emacs_tags -mouseshape +startuptime -xterm_clipboard
j'ai installé vim-gnome (qui supporte le presse-papiers) et j'ai vérifié à nouveau:
vim --version | grep clipboard
+clipboard +insert_expand +path_extra +user_commands
+emacs_tags +mouseshape +startuptime +xterm_clipboard
maintenant je suis capable de copier et Coller en utilisant "+y et " +p respectivement.
rien de ce qui précède n'a fonctionné pour moi sur mon ordinateur portable windows.
Ctrl + C a été très bien pour la copie.. mais j'avais besoin d' Shift + Insérer à la Pâte !
(une bonne raison pour obtenir toujours un ordinateur portable où Insert peut toujours être accédé sans appuyer sur une touche secondaire)
pour OSX, comme le 10342 Réponses ci-dessus précisé, vous devez vous assurer que vim prend en charge la fonction de bloc-notes, dit Celui qui vient pré-expédié avec OSX ne supporte pas le bloc-notes, et que si vous exécutez
brew install vim
ça marcherait.
sauf que l'exécution de vi vous fera toujours exécuter la version OSX pré-compilée, pas celle que vous avez installée à partir de brew.
pour passer au-dessus de cela, j'ai simplement aliasé ma commande vim à la version brew, pas la OSX par défaut:
alias vim="/usr/local/Cellar/vim/8.0.1100_1/bin/vim"
et maintenant, je suis d'or