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?
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 fichierUtilisation:
:%y+
tirer toutes les lignes.
Explication:
%
pour faire référence à la prochaine commande pour travailler sur toutes les lignesy
pour tirer ces lignes+
pour copier dans le presse-papier du systèmeNB: Sous Windows, +
et *
sont équivalents voir cette réponse .
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
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
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.
Voici ce que je fais pour extraire tout le fichier:
ggVGy
(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
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.
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".
Si vous utilisez Vim en mode visuel, les touches Couper et Coller standard s'appliquent également, du moins avec Windows.
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).
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!
Vous pouvez utiliser la commande "cat" pour ouvrir le fichier et utiliser la souris pour copier
: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.
:%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.
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:
gg
pour obtenir le curseur à la première ligne y
-> il tire 78 lignes sous votre curseur et la ligne en cours 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>
.
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?
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
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 ...
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.
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.
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).