web-dev-qa-db-fra.com

Comment copier tout le texte de l'éditeur vim à l'aide de la ligne de commande vim?

Je veux sélectionner tout le texte de l'éditeur vim, j'ai essayé la commande :%y+, mais l'erreur E850: Invalid register name a été détectée. Je reçois cette commande de ce lien . S'il vous plaît, aidez-moi à copier tout le texte d'un fichier ouvert dans vim. Ils utilisent yank, quel est le sens de celui-ci ..

13
geeks

J'avais un problème similaire. Je ne sais pas pourquoi vous avez eu autant de votes négatifs. Le problème est que vous n'avez pas installé vim-gnome, ce qui prend environ 24 Mo et ajoute une fonctionnalité au vim intégré.

Sudo apt-get install vim-gnome

alors votre commande fonctionnera. %yy+ Cette commande va copier tout le texte dans le presse-papier du système.

14
Harnirvair Singh

TLDR: Si vous voulez copier du texte dans Vim dans le type de presse-papiers du système ggVG"*y. Explication ci-dessous ...

Vim s'exécute dans le terminal et, selon l'utilisation que vous en faites et le type de Vim utilisé, il n'est pas vraiment conçu pour sélectionner du texte à l'aide d'une souris et pour le copier-coller de manière traditionnelle.

Si vous voulez sélectionner tout le texte avec Vim, utilisez ggVGy (notez les majuscules VG au milieu). Cette commande déplace le curseur en haut du fichier, passe en mode visuel, en bas du fichier (et sélectionne ainsi tout le texte), puis le copie (le copie). Vous pouvez alors utiliser p mettre (coller) ce code mais uniquement à l'intérieur de Vim .

Si vous voulez copier dans le presse-papier pour l'utiliser quelque part en dehors de Vim alors essayez ceci:

Tout d'abord, sélectionnez tout en utilisant les commandes décrites ci-dessus mais sans la dernière  y: (ggVG). Puis appuyez "*y. Ceci devrait maintenant le copier dans le presse-papier de votre système d’exploitation et vous pouvez simplement le coller (Ctrl/Cmd+v) partout où vous voulez en dehors de Vim. Cela peut varier en fonction des paramètres que vous avez pour Vim, mais cela devrait fonctionner.


Une brève explication des commandes utilisées. gg va au début du fichier. V entre en mode visuel par des lignes. G va à la fin du fichier. y yanks (copie) le texte mais pas dans le presse-papier. p met (colle) le texte.

Les choses les plus avancées (cool):

" vous permet d'accéder aux registres. Par exemple "a donne accès à enregistrer un.

Le * est le presse-papiers du système. Ainsi, "* permet d'accéder au clavier du système. Par conséquent, "*y pénètre dans le presse-papiers du système.

5
Gordonium

Pour sélectionner tout le fichier, vous pouvez aller au début, au mode visuel, aller à la fin:

ggVG

1
December

Bien qu'il existe une bonne explication sur la façon de exploiter le presse-papiers du système dans vim, il semble que vous ayez du mal à obtenir que votre vim accède au presse-papiers en premier lieu. Essayez d’installer vim-gnome, il vous donne les paquetages dont vous avez besoin pour accéder au presse-papiers du système.

Pour une raison quelconque, "* n'a pas fonctionné pour moi, mais la même commande avec le registre" + a fonctionné.

1
jazzyfresh

Cette question a quelques années maintenant, mais j'ai eu le même problème sous Linux Mint 18. J'ai découvert que xclip fonctionnait pour moi. Vous pouvez mapper la commande vmap <F7> :!xclip -sel c<CR><CR> dans votre fichier .vimrc pour que votre sélection actuelle en mode visuel soit copiée dans le Presse-papiers du système. 

Ici est un fil de discussion contenant les solutions ci-dessus (et d'autres).

0
Sparrow1029