Comment sélectionner tout le texte dans Vi / Vim?


193

Utiliser l'outil VI pour éditer les fichiers de configuration.

Comment sélectionner tout le texte d'un fichier (environ 1000 lignes), le copier, puis le coller dans Google Docs?

Réponses:


159

Le moyen le plus simple et le plus rapide consiste à utiliser: : % y +et ensuite passer à Google Docs (ou ailleurs) et coller. Explication:

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

Une autre solution consiste à g g " + y Gadmettre que ce qui précède est plus rapide et plus simple.


10
@Tuxmentat pouvez-vous s'il vous plaît expliquer ce que chaque touche fait en:%y+
Jas

10
Cette réponse serait meilleure si elle expliquait ce que chaque touche fait pour les deux séquences.
DemandeAnyway

6
Ma meilleure supposition: le ':' signifie que nous utilisons une commande "ex mode" (je pense). De toute façon, c'est une commande. '%' est un spécificateur spécial de plage de ligne de commande qui spécifie le fichier entier. 'y' tire tout et '+' spécifie le registre du presse - papier . : help <command> m'a aidé à comprendre cela.
Hawkeye Parker

11
je dois faire quelque chose de mal. je tape :%y+, et je reçoisE488: Trailing characters
johny pourquoi

25
Je reçois "E850: Nom du registre invalide". La deuxième méthode fonctionnait bien pour la copie, mais n'atteignait pas le presse-papier du système sous Ubuntu 16.04 (du moins pour moi --- j'ai un fichier .vimrc qui peut affecter les choses).
EntangledLoops

95

Beaucoup de réponses données ont également effacé la sélection, ce que je ne cherchais pas.

J'utilise ggVGà cet effet (doit être exécuté en mode normal). Cette commande ne sélectionne que le texte entier dans le document.

J'ai même remappé Ctrl+Aà cette fin, car je n'ai pas vraiment besoin d'incrémenter un entier avec le raccourci ( Ctrl+Acarte par défaut ).

Ajoutez simplement ceci dans votre .vimrc:

map <C-a> <esc>ggVG<CR>

Il doit d’ <esc>abord s’assurer que l’utilisateur est en mode normal.


2
Exactement ce que je cherchais, et ça fait plaisir de voir que Ctrl + A n'est pas occupé par défaut dans vim. J'espère qu'il n'y a pas d'effets secondaires.
Nikos Alexandris

2
Personnellement ggVG, je l'utilise , mais cela gg0vG$pourrait être plus approprié car cela reproduit plus étroitement l'opération Ctrl + A 'normale'.
Sheharyar

39

Vous pouvez utiliser cat file, puis sélectionner la sortie et copier / coller si vous avez besoin de la coller dans votre navigateur.

Pour vi voici comment vous pouvez sélectionner tout le texte et l’écrire dans un nouveau fichier:

shift v  -- visual mode
shift g -- jump to eof
"*y -- yank select text
:e my_new_file -- create a new file
"*p -- paste into a new file

En théorie, cela devrait fonctionner à la fois sous Linux et Windows - je l’ai essayé sur un Mac mais cela ne fonctionne pas.


1
Coller dans le navigateur Web cat fileest la voie à suivre. La shift vméthode ne copie que dans le tampon interne de Vi.
Aleksandr Levchuk

pas si vous utilisez le presse-papiers du système qui utilise le * registre - mais cela ne fonctionne que sur X et j'ai entendu sur Windows - donc si vous utilisez ssh, vous avez besoin de -X - pour vérifier si vim prend en charge vim -: set clipboard + = sans nom

Existe-t-il une autre solution pour ce faire sans créer un nouveau fichier? Si nous modifions en direct sur le serveur, nous devons conserver le code de sauvegarde sur la machine locale afin de pouvoir revenir en arrière.
NJInamdar

+1 pour chat et sélectionnez en mastic. Bien sûr, cela ne fonctionnera pas pour des fichiers volumineux et n’est pas la méthode la plus conviviale. Mais pour copier de petits fichiers de script, ce qui sort de la fenêtre d'affichage suffit.
Arnis Juraga


8

J'utilise Vim 7.4 dans l'environnement CentOS-7. Ce qui m'a fonctionné pour sélectionner tout le texte est

:%y

Ensuite, juste pdans le fichier suivant où je veux une copie complète.

Ou

Vous pouvez utiliser la commande chat.

cat copyfile > pastefile

Ce dépôt git a aussi d’autres commandes utiles.


7

gg"+yG

ou

gg"*yG

selon que + ou * est le presse-papiers du système. (Sur de nombreux unix, + est le tampon de sélection de la souris pour un clic du milieu et * est le presse-papiers du système).


1
Je pense que c'est l'inverse: "* est la sélection et" + est le presse-papiers. vimdoc.sourceforge.net/htmldoc/gui_x11.html#x11-selection
Mikel

Vous avez raison. Je le savais aussi, mais j'ai tapé la mauvaise chose. ☹
frabjous

3

Pour un Mac, utilisez pbcopy (copier-coller):

cat file.txt | pbcopy

Le contenu de fichier.txt se trouve maintenant dans le presse-papier pour pouvoir être collé dans une autre application (par exemple, un navigateur).

Vous pouvez également coller le contenu du presse-papiers dans un fichier à l'aide de pbpaste:

pbpaste > file.txt

Bien que cela ne concerne pas spécifiquement vi, il atteint le même objectif sur un Mac.


1

Si vous utilisez un bureau Linux, vous pouvez le charger dans le presse-papiers en utilisant xclip ou xsel. Pour quelque chose de cette taille, vous voudrez peut-être simplement utiliser la fonctionnalité de téléchargement de Google Documents.


1

Une autre façon serait:

Vous appuyez vsur la touche de votre clavier et réglez VIM sur VISUAL

Puis sélectionnez tout le texte en faisant défiler

^+ INSERTcopier

SHIFT+ INSERTpour coller le texte où vous voulez sur Google Docs.




0

Utilisez la commande suivante.

cat <your file name>

Cela fera écho au contenu du fichier. Maintenant, sélectionnez, faites défiler, copiez, collez.
Jeu terminé

Ex.:

cat bobis.txt
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.