Existe-t-il un moyen de copier toutes les lignes du fichier ouvert dans le presse-papiers dans l'éditeur de VI. J'ai essayé yGmais il n'utilise pas le presse-papiers pour stocker ces lignes.
Est-ce donc possible?
Existe-t-il un moyen de copier toutes les lignes du fichier ouvert dans le presse-papiers dans l'éditeur de VI. J'ai essayé yGmais il n'utilise pas le presse-papiers pour stocker ces lignes.
Est-ce donc possible?
Réponses:
Vous devez extraire le texte des registres*
ou :+
gg"*yG
Explication:
gg
pour amener 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
aller à la fin du fichier"
.
:version
dans vim et recherchez l' +xterm_clipboard
indicateur. S'il est précédé d'un signe moins, vous n'aurez pas cette fonctionnalité. Si tel est le cas, vous voudrez peut-être compiler vim vous-même ou exécuter gvim qui a généralement cette fonctionnalité activée.
Utilisation:
:%y+
pour tirer toutes les lignes.
Explication:
%
faire référence à la commande suivante pour travailler sur toutes les lignesy
pour arracher ces lignes+
copier dans le presse-papiers du systèmeNB : sous Windows, +
et *
sont équivalents voir cette réponse .
:help
pour vous assurer que vous êtes bien dans vim.
set clipboard=unnamed
, mais cela a très bien fonctionné!
E850: Invalid register name
:(
sur Mac
copier la partie sélectionnée: sélectionner visuellement le texte (taper v
ou V
en mode normal) et taper:w !pbcopy
copier tout le fichier :%w !pbcopy
passé du presse-papiers :r !pbpaste
pbcopy
est un utilitaire Mac. Sous Linux, xsel
peut fonctionner à la place ou clip
sous Windows.
:%w !pbcopy
fonctionne toujours si le fichier est plus long que la hauteur du terminal.
Le presse-papiers est un tampon +. Pour copier dans le presse-papiers, faites "+yet [mouvement].
Donc, gg"+yGcopiera tout le fichier.
De même, pour coller à partir du presse-papiers, "+p
Un autre moyen simple de copier l'intégralité du fichier si vous rencontrez des problèmes avec VI, consiste simplement à taper "cat filename". Il fera écho du fichier à l'écran, puis vous pouvez simplement faire défiler vers le haut et vers le bas et copier / coller.
:!cat %
. Et pour copier le contenu du fichier par programme dans le presse-papiers sur Mac OS::!cat % | pbcopy
Voici ce que je fais pour arracher tout le fichier:
ggVGy
clipboard
jeu pour copier le texte retiré +
.
Vous pouvez utiliser la commande "cat" pour ouvrir le fichier et utiliser la souris pour copier
reset
le terminal au préalable, puis sélectionnez tout et copiez. Cela fonctionne par ssh
session.
(en réponse à @rshdev, et pour éviter d'avoir à 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
il n'est pas installé par défaut. pour installer, utilisez:
sudo apt-get install xclip
Sur Ubuntu 12
vous pouvez essayer d'installer le vim-gnome
package:
sudo apt-get install vim-gnome
Je l'ai essayé, car il vim --version
m'a dit que le drapeau xterm_clipboard serait désactivé (indiqué par - ), ce qui est nécessaire pour utiliser la fonctionnalité du presse-papiers.
-> l'installation du paquet vim-gnome sur Ubuntu 12 a également installé une version console de vim, qui a cette option activée (indiquée par un + avant l'indicateur xterm_clipboard)
Sur Arch Linux
vous pouvez installer vim-clipboard
pour la même raison.
Si vous exécutez neovim, vous devez installer xclip
(comme expliqué par help clipboard-tool
)
Si vous utilisez Vim en mode visuel, les touches standard de copier-coller s'appliquent également, au moins avec Windows.
Sous le terminal Ubuntu (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 ALTEsuivi par A).
J'ai essayé quelques-unes des commandes que les gens ont mentionnées ci-dessus. Aucun n'a fonctionné. Ensuite, je me suis emparé du plus simple de tous.
Étape 1: vi <filename>
Étape 2: Faites un clic droit sur la barre de titre de la fenêtre Putty
Étape 3: Sélectionnez "Effacer le défilement" (pour éviter de copier le reste de votre session SSH)
Étape 4: Cliquez de nouveau avec le bouton droit et sélectionnez "Copier tout dans le presse-papiers".
Window > Settings > lines of scrollback
à 40000 (également disponible en cliquant avec le bouton droit sur la barre de titre). Il est également utile d'utiliser cat
au lieu de vi, car cela fait défiler tout le texte.
: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.
Eh bien, toutes ces approches sont intéressantes, mais en tant que programmeur paresseux, j'utilise yank all line en utilisant une combinaison de 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 actuelle Il n'y avait pas de concept de "presse-papiers" dans Bill Joy's vi, donc je ne pense pas qu'il y ait une manière intégrée de le faire.
La fonction de copie automatique de tout ce qui est mis en surbrillance dans le presse-papiers de gVim est la plus simple ou utilisez un programme externe via:!
Pour le vim de Cygwin, j'utilise
:%!putclip
u
Peut-être qu'Ubuntu a une application CLI comme putclip ??
Si vos doigts par défaut CTRL-A CTRL-C
, essayez les mappages depuis $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 mappés à <Leader><C-a>
et <Leader><C-c>
.
Copiez tout le fichier à l'intérieur du vim ou de ses onglets
y G
puis passez à un onglet et collez par
p
et pour couper l'utilisation du fichier entier
d G
Je sais que dix ans devraient être réglés, 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 sélectionner le tout avec une souris, vous êtes bloqué car les copies habituelles ne fonctionnent pas entre la télécommande et les presse-papiers de la machine locale.
Donc, pour copier sur le Linux distant et coller sur le Windows local, spécifiez le tampon primaire avec le *et faites un joli double tirage
Utilisez gg" * yy.
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 comme xclip. pour plus d'informations sur neovim:h checkhealth
Il est également important de mentionner que pas toujours simple y
copie dans le presse papier, afin de faire tous les aliments de copie +
Wich est « Presse - papiers Enregistrer » essayer de définir: :set clipboard=unnamed,unnamedplus
. Pour mor informations , voir: :h unnamed
.
Voici plus d'informations sur vim wikia.
Vous pouvez utiliser un raccourci, comme celui-ci:
noremap <F6> :%y+<CR>
Cela signifie que lorsque vous appuyez sur F6 en mode normal, il copie l'intégralité du fichier et l'ajoute au presse-papiers. Ou vous pouvez simplement taper en mode normal, :%y+
puis appuyer sur Enter
.
Cliquez avec le bouton gauche de la souris, faites glisser sur la section que vous souhaitez copier et libérer. Le code est automatiquement copié dans le presse-papiers.
vi
moyen).
Je n'ai pas pu copier les fichiers en utilisant les réponses ci-dessus mais j'ai du mastic et j'ai trouvé une solution de contournement sur Quora.
Remarque: il copie tous les caractères imprimés de cette session dans le fichier journal, de sorte qu'il deviendra éventuellement grand. Dans ce cas, supprimez le fichier journal et cat le fichier cible afin que le contenu de ce fichier particulier soit copié sur votre ordinateur.