Copier le fichier entier

126

J'écris souvent quelque chose dans gVim, puis je dois le copier-coller dans une autre application.

Existe-t-il un moyen simple de récupérer le fichier entier? Je fais habituellement quelque chose comme ça

ggVG"+y

(Aller en haut, mode ligne visuelle, aller en bas, yank)

Mais y a-t-il une meilleure façon que je passe à côté?

Chad Birch
la source

Réponses:

202

J'utilise l'instruction suivante: :%y+

Luc Hermitte
la source
6
Que fait le +, s'il vous plaît?
VoY
5
Ceci est un registre lié au presse-papiers. Le même que celui utilisé par le PO dans sa question. => :h :y,:h registers
Luc Hermitte
5
@VoY: Vous devez avoir compilé la propriété Clipboard dans Vim pour que ce "+ clipboard" fonctionne. Cela signifie "tout ce qui est extrait vers le presse-papiers externe dans un gestionnaire de fenêtres". Cette propriété n'est pas de facto mais elle est fournie avec certains vims graphiques apparemment de facto tels que gVim. S'il vous plaît, corrigez-moi si je me trompe (j'ai juste remarqué cette chose quand j'ai dû utiliser yank dans Windows gVim donc je ne peux pas être totalement sûr bien sûr, mais je crois que c'est la propriété).
hhh
8
Si le registre + ne fonctionne pas pour vous dans ubuntu 11.04+, essayez d'installer gVim (apt-get install vim-gnome). Cela fournira également la propriété + clipboard dans la version terminale de vim
adharris
3
J'avais l'habitude de faire gg"+YGmais je n'ai jamais aimé parce que j'ai perdu la ligne originale sur laquelle j'étais. C'est parfait!
verboze le
57

ggyG (aller à la première ligne, tirer à la dernière ligne)

Edit: Ah, presse-papiers système. Ne roule pas exactement des doigts, mais:gg"+yG

Annika Backstrom
la source
1
Merci, cela fonctionne pour moi, pas:% y +. Mais comment le coller sur localhost à partir de la télécommande? :)
valk
1
Donc, fondamentalement, cette commande monte en haut du document, et fait quelque chose, tirez vers le bas du document? Que signifie "faire ici?
geoyws
1
@Geoyws "dit que vous voulez travailler avec un registre. "+est un registre lié au presse-papiers du système. "+yGextrait tout jusqu'au bas du fichier dans ce registre. :help "+
Annika Backstrom
15

Une solution de travail dans l'ancien vi est :r filenamedans le nouveau fichier.

mouviciel
la source
5
Même si ce n'est pas exactement une réponse à la question, c'était la réponse à la mienne . Je vous remercie.
2
Je dois ajouter un zéro pour le coller au début du fichier::0r filename
Stefan van den Akker
12

Une autre méthode est la suivante:

ggyG

Allez en haut et tirez vers le bas.

Glen Solsberry
la source
stackoverflow.com/a/829944/6723250 a les mêmes informations avec quelques détails supplémentaires
Xerus
6

J'utilise l'instruction suivante: :%y.

Cheng
la source
... pas sur différentes fenêtres dans le gestionnaire de fenêtres. + à la fin le tire dans le presse-papiers externe (apparemment ce que l'op essaie de faire)
hhh
4
:0,$ y

Je ne sais pas quel chemin est le plus facile.

Meninx - メ ネ ン ッ ク ス
la source
3

Ou simplement dans votre .vimrc:

nmap <silent> <F5> ggVG"+y

Vous ne pouvez donc utiliser qu'une seule clé :)

Dr Hannibal Lecter
la source
3

Sous OSX:

ggVG
!tee >(pbcopy)

Ce que je trouve plus agréable que:

ggVG
:w !pbcopy

Puisqu'il ne fait pas clignoter une invite: " Press ENTER or type command to continue"

James Scriven
la source
1

:%ysans +fonctionne sur tout le système si vous utilisez neo-vim (nvim).

Cela nous permet d'éviter d'étirer nos doigts vers le +- en fait, ce raccourci est meilleur que ggyG.

ApprendreOPhile
la source
0

Selon la fréquence à laquelle vous le faites, mappez simplement une clé pour cela et ajoutez éventuellement au vimrc

:nnoremap <F5> :%y

ou

:nnoremap <leader><whatever> :%y

ou toute autre clé que vous savez sûre et la plus rapide, puis ajoutez-la à une source de mappage ou autre. L'avantage ggyGest que cela ne déplace pas le curseur (plus rapidement) et pour conserver la position de votre curseur, vous devrez ajouter un<Ctrl-o><Ctrl-o>

Les gens oublient souvent que les commandes sont basées sur la session, sauf dans le vimrc. Je sais souvent quand je vais faire beaucoup de choses mais je n'en ai pas besoin par défaut et juste:[mode]remap <whatever> <whatever>

Je peux fermer et rouvrir vim si nécessaire.

Si cela <Ctrl-A><Ctrl-C>fonctionne pour vous, alors vous utilisez mswin.vim dans votre source et perdez la puissance des opérations d'incrémentation <Ctrl-a>et de décrémentation <Ctrl-x>(entre autres). J'ai commencé dans Windows et j'ai arrêté d'utiliser mswin.vim il y a longtemps. Personnellement, je pense qu'il est préférable de grok Vim de la bonne manière, puis d'ajouter les béquilles dont vous avez vraiment besoin: P

Alex
la source
2
Bienvenue dans Stackoverflow. L'éditeur prend en charge le formatage , veuillez donc envisager d'encapsuler vos exemples de code (tels que les commandes que vous avez utilisées) dans des backticks ( `) ou des blocs de code.
Jan Kundrát le
-1

C'est sale mais vous n'avez pas du tout besoin d'utiliser la touche Shift et seulement 3 touches différentes qui peuvent être plus rapides:

gg1111yy

(En supposant que le fichier est plus court que 1111 lignes)

Richard
la source
-2

Sous Windows, je fais souvent CTRL-A, CTRL-C pour tout copier dans le presse-papiers de Windows ... Impossible de faire plus simple que ça!

J'utilise un gvim 7.1 standard du site Web ...

(BTW: fonctionne également sur mon mac avec MacVim et cette drôle de touche mac + A, mac-key + C)

Daren Thomas
la source
1
windows gvim ajoute des raccourcis supplémentaires qui ne sont pas dans les autres versions, pour essayer de l'adapter mieux aux utilisateurs de Windows. ctrl + a, ctrl + c en sont deux exemples.
davr
9
Mm, ctrl-c a une signification assez différente pour un utilisateur de terminal.
Xiong Chiamiov
bien sûr, mais quand dans Windows, faites comme les fenêtres :) Juste en disant, gvim et MacVim honorent les raccourcis du presse-papiers standard de la plate-forme - il n'y a rien de mal à les utiliser non plus ....
Daren Thomas
4
Autant ne pas utiliser du tout vim, si vous souhaitez utiliser des raccourcis comme ceux-ci.
VoY
1
CTRL-A incrémente le nombre sous le curseur.
Alexcp