Question

Existe-t-il un moyen de copier toutes les lignes d'un fichier ouvert vers le presse-papiers dans l'éditeur de VI. J'ai essayé y G mais le presse-papier ne permet pas de stocker ces lignes.

Alors, est-ce possible?

Était-ce utile?

La solution

Vous devez relier le texte au * ou + enregistre :

g g & " * y G

Explication:

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

Autres conseils

Utiliser:

: % y +

pour supprimer toutes les lignes.

Explication:

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

NB : 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 mode) et tapez :w !pbcopy

  • copier le fichier entier :%w !pbcopy

  • collé depuis le presse-papiers :r !pbpaste

Le presse-papiers est un tampon + . Pour copier dans le presse-papiers, utilisez & "; + y et [mouvement].

Donc, g g & "; + y G copiera l'intégralité du fichier.

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 à saisir " cat nomfichier " ;. 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 l'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

Sous Ubuntu 12

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

sudo apt-get install vim-gnome

Je l'ai essayé, car vim --version m'a indiqué que le drapeau xterm_clipboard serait désactivé (indiqué par - ), ce qui est nécessaire pour utiliser le Presse-papiers. fonctionnalité.

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

Sous Arch Linux

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

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

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

  • CTRL Un signifie & "Marquer le fichier entier.
  • CTRL C signifie & "Copier la sélection".
  • ESC signifie & "désélectionner - votre prochaine pression de touche ne remplacera donc pas le fichier entier: -)

Sous Ubuntu au moins (Gnome), la copie standard fonctionne également ( CTRL SHIFT C , bien qu'il ne semble pas être un raccourci clavier standard pour select all (autre que ALT E suivi de 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) dans tampon.good luck!

J'ai essayé quelques-unes des commandes mentionnées ci-dessus. Aucun n'a travaillé. Puis je me suis procuré le 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 & Quot; Effacer le défilement & Quot; (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 &".

:%y a transfère tout le contenu dans le tampon de vim, Appuyez sur p en mode commande pour coller le contenu extrait après la ligne sur laquelle se trouve actuellement votre curseur.

gVim:

:set go=a

g g V G

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.

Il n'y avait pas de concept de " presse-papier " vi vi de Bill Joy donc je ne pense pas qu'il existe un moyen intégré de le faire.

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

Pour vim Cygwin, j'utilise

:%!putclip
u

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

Bien, toutes ces approches sont intéressantes, cependant en tant que programmeur paresseux, j’utilise yank toute la ligne en utilisant une combinaison de numéro + 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érez 78 + <=> - > il tire 78 lignes sous le curseur et la ligne en cours

Si la valeur par défaut de vos doigts est 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>.

Copiez l'intégralité du fichier dans vim ou ses onglets

y G 

puis déplacez-vous vers un onglet et collez-le par

p

et pour couper toute l'utilisation du fichier

d G

Voici une commande de carte pour tout sélectionner dans 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 ...

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 (ordinateur local), si vous ne pouvez pas tout sélectionner à la 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 faites un joli double-coup

Utilisez g g & " * y y .

J'ai ajouté la ligne suivante à mon fichier .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).

Je ne pouvais pas copier de fichiers en utilisant les réponses ci-dessus, mais j'ai du mastic et j'ai trouvé une solution de contournement sur Quora.

  1. Modifiez les paramètres de votre session PuTTY, accédez à la journalisation et définissez-le sur & "; caractères imprimables &"; Définir le fichier journal
  2. Faire un chat du fichier respectif
  3. Accédez au fichier que vous avez défini à l'étape 1 et votre contenu apparaîtra dans le fichier journal.

Remarque: il copie tous les caractères imprimés de cette session dans le fichier journal afin qu’il devienne éventuellement gros. Dans ce cas, supprimez le fichier journal et catez le fichier cible afin de copier le contenu de ce fichier sur votre ordinateur.

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 qu’il n’est pas toujours simple y de copier dans le presse-papiers pour que chaque flux de copie + soit & "Clipboard Register &"; essayez de définir: :set clipboard=unnamed,unnamedplus. Pour plus d’informations, voir: :h unnamed.

Ici plus d'informations sur vim wikia.

Cliquez avec le bouton gauche de la souris, faites glisser le curseur sur la section que vous souhaitez copier et relâchez. Le code est automatiquement copié dans le presse-papier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top