web-dev-qa-db-fra.com

Copier toutes les lignes dans le presse papier

Est-il possible de copier toutes les lignes d'un fichier ouvert vers le presse-papiers dans l'éditeur de VI? j'ai essayé yG mais ce n'est pas en utilisant presse-papiers pour stocker ces lignes.

Alors est-ce possible?

487
Xinus

Vous devez transférer le texte dans le * ou le +registres :

gg"*yG

Explication:

  • gg pour placer le curseur sur le premier caractère du fichier
  • "*y pour lancer une commande yank dans le registre * à partir de la première ligne, jusqu'à ce que ...
  • G pour aller à la fin du fichier
564
CMS

Utilisation:

:%y+

tirer toutes les lignes.

Explication:

  • % pour faire référence à la prochaine commande pour travailler sur toutes les lignes
  • y pour tirer ces lignes
  • + pour copier dans le presse-papier du système

NB: Sous Windows, + et * sont équivalents voir cette réponse .

612
Rook

sur Mac

  • copier la partie sélectionnée: sélection visuelle du texte (tapez v ou V en mode normal ) et tapez :w !pbcopy

  • copier le fichier entier :%w !pbcopy

  • past du presse-papiers :r !pbpaste

68
Brian

Le presse-papier est tampon +. Pour copier dans le presse-papier, faites "+y et [mouvement].

Alors, gg"+yG va copier le fichier entier.

De même, pour coller du presse-papiers, "+p

48
Tordek

Un autre moyen simple de copier l'intégralité du fichier si vous rencontrez des problèmes d'utilisation de VI consiste simplement à taper "cat filename". Le fichier s'affichera à l'écran, puis vous pourrez simplement faire défiler et copier/coller.

33
Zack

Voici ce que je fais pour extraire tout le fichier:

ggVGy
25
EmilianoGNFNR

(en réponse à @rshdev, et pour éviter de devoir recompiler vim avec + xterm_clipboard par @nelstrom dans les commentaires sur OP)

il y a un programme appelé xclip qui fonctionne comme putclip sur Ubuntu 11:

:%!xclip -sel clip
u

ce n'est pas installé par défaut. pour installer, utilisez:

Sudo apt-get install xclip
10
Stew

Sur Ubuntu 12

vous pouvez essayer d'installer le paquet vim-gnome:

Sudo apt-get install vim-gnome

Je l'ai essayé, car vim --version m'a dit qu'il aurait le drapeau xterm_clipboard disabled (indiqué par - ), qui est nécessaire pour utiliser la fonctionnalité du presse-papier.

-> L’installation du paquet vim-gnome sur Ubuntu 12 a également installé une version de vim basée sur une console, avec cette option activée (indiqué par un + avant l’indicateur xterm_clipboard)

Sur Arch Linux

vous pouvez installer vim-clipboard pour la même raison.

9
Arch Linux Tux

J'ai essayé quelques-unes des commandes mentionnées ci-dessus. Aucun n'a fonctionné . Ensuite, j'ai mis la main sur le plus simple d'entre eux. 

Étape 1: vi <filename>
Étape 2: clic droit sur la barre de titre de la fenêtre de PuTTY
Étape 3: Sélectionnez "Effacer le retour en arrière" (pour éviter de copier le reste de votre session SSH)
Étape 4: Cliquez à nouveau avec le bouton droit de la souris et sélectionnez "Tout copier dans le presse-papiers". 

5
Abhinav Deshpande

Si vous utilisez Vim en mode visuel, les touches Couper et Coller standard s'appliquent également, du moins avec Windows.

  • CTRLA signifie "Marquer le fichier entier.
  • CTRLC signifie "Copier la sélection.
  • ESC signifie "désélectionner, pour que votre prochaine pression sur la touche ne remplace pas le fichier entier :-)

Sous Ubuntu terminal (Gnome) au moins, la copie standard fonctionne également (CTRLSHIFTC, bien qu’il ne semble pas y avoir de raccourci clavier standard pour select all (autre que ALTE suivi par A).

5
paxdiablo

vous pouvez appuyer sur gg pour localiser votre curseur au début du fichier, puis appuyer sur yG pour copier tout le contenu du début à la fin (emplacement G situé) dans buffer.good luck!

5
gameboy90

Vous pouvez utiliser la commande "cat" pour ouvrir le fichier et utiliser la souris pour copier 

5
Luan Pham

gVim:

:set go=a

ggVG

Voir :help go-a:

'a' Autoselect:  If present, then whenever VISUAL mode is started,
 or the Visual area extended, Vim tries to become the owner of
 the windowing system's global selection.  This means that the
 Visually highlighted text is available for pasting into other
 applications as well as into Vim itself.  When the Visual mode
 ends, possibly due to an operation on the text, or when an
 application wants to paste the selection, the highlighted text
 is automatically yanked into the "* selection register.
 Thus the selection is still available for pasting into other
 applications after the VISUAL mode has ended.
     If not present, then Vim won't become the owner of the
 windowing system's global selection unless explicitly told to
 by a yank or delete operation for the "* register.
 The same applies to the modeless selection.
3
kev

:%y a Envoie tout le contenu dans la mémoire tampon de vim, Appuyez sur p en mode commande pour coller le contenu supprimé après la ligne où se trouve actuellement votre curseur.

3
Ma'moon

Eh bien, toutes ces approches sont intéressantes, cependant en tant que programmeur paresseux, j’utilise yank toute la ligne en utilisant la combinaison du nombre + y

par exemple vous avez un fichier de code source avec un total de 78 lignes, vous pouvez faire comme ci-dessous:

  1. gg pour obtenir le curseur à la première ligne 
  2. insérer 78 + y -> il tire 78 lignes sous votre curseur et la ligne en cours 
2
arfo

Si vos doigts sont définis par défaut sur CTRL-A CTRL-C, essayez les correspondances de $VIMRUNTIME/mswin.vim.

" CTRL-C and CTRL-Insert are Copy
vnoremap <C-C> "+y

" CTRL-A is Select all
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG

Je les ai mis en correspondance avec <Leader><C-a> et <Leader><C-c>.

2
go2null

Il n'y avait pas de concept de "presse-papiers" dans le vi de Bill Joy, donc je ne pense pas qu'il existe une manière intégrée de le faire.

la fonctionnalité de copie automatique de tout ce qui est en surbrillance dans le presse-papier est plus simple ou utilisez un programme externe via:!

J'utilise Vim pour Cygwin 

:%!putclip
u

Peut-être que Ubuntu a une application CLI comme putclip?

2
rshdev

Ne copiez le fichier entier dans vim ou ses onglets 

y G 

puis passer à un onglet et coller par 

p

et de couper l'utilisation du fichier entier

d G
2
Abdul Basit

Voici une commande de carte pour sélectionner tout le presse-papiers en utilisant CTRL+a:

"
" select all with control-a
"
nnoremap <C-a> ggmqvG"+y'q

Ajoutez-le à votre . Vimrc et vous êtes prêt à partir ...

1
jahroy

J'ai créé une fonction pour effectuer cette action, placez-la sur votre ~/.vimrc.

fun! CopyBufferToClipboard()
    %y+
endfun
nnoremap <Leader>y :call CopyBufferToClipboard()<CR>
command! -nargs=0 CopyFile :call CopyBufferToClipboard()

OBS: Si vous utilisez neovim, vous avez également besoin d’un gestionnaire de presse-papiers tel que xclip. pour plus d'informations, saisissez neovim :h checkhealth

Il est également important de mentionner que pas toujours une simple y sera copiée dans le presse-papiers, afin que chaque flux de copie + qui est "Clipboard Register" tente de définir: :set clipboard=unnamed,unnamedplus. Pour plus d'informations, voir: :h unnamed.

Ici plus d’informations sur vim wikia.

0
SergioAraujo

Je sais que cela devrait durer dix ans, mais les deux premières réponses n’ont pas fonctionné pour moi, alors j’ai continué à creuser. Sur un RedHat (serveur distant) - Windows 10 (machine locale), si vous ne pouvez pas tout sélectionner avec une souris, vous êtes bloqué car les copies habituelles ne fonctionnent pas entre les presse-papiers de la machine distante et de la machine locale.

Donc, pour copier sur le Linux distant et coller sur le Windows local, spécifiez le tampon principal avec le * et faire un double doublé Nice

Utilisation gg"*yy.

0
Lefty G Balogh

J'ai ajouté la ligne suivante à mon .vimrc

nnoremap <F5> :%y+<CR>

Cela me permet de copier tout le texte de Vim dans le presse-papiers en appuyant sur F5 (en mode commande).

0
aks