Comment copier coller du contenu dans l'éditeur vi

J'ai essayé d'utiliser Ctrl + V pour coller du contenu dans un document vi editor, mais Ctrl + V n'est pas interprété comme une pâte.

Tout d'abord, assurez-vous que vous êtes en mode édition (appuyez sur i). Ensuite, vous pouvez coller avec Ctrl+Shift+V, si vous êtes dans un émulateur de terminal comme gnome-terminal (ou sélectionnez "Coller" dans le menu contextuel).

Vous pouvez également taper :set paste dans vim avant de coller pour désactiver l'indentation automatisée, etc. Puis :set nopaste après avoir collé le contenu.

Vérifiez également cette question sur stackoverflow.com pour plus d'informations.

Si vous souhaitez copier / coller des lignes dans vim (par opposition au collage du contenu du presse-papiers), vous voudrez vérifier le yank commande. Voici un feuille de triche ça pourrait aider.

Vi (et Vim) fonctionne très différemment par rapport à un éditeur de texte normal tel que Gedit. Il a également une courbe d'apprentissage assez raide. Si vous voulez apprendre quelques commandes de base, commencez par ce tutoriel interactif.

Cependant, pour répondre à votre question. Le contenu du presse-papiers du système est accessible via le registre plus. Donc, pour coller quelque chose à partir du presse-papiers du système, vous pouvez, à partir du mode normal, appuyer sur: "+p (Pas en même temps, mais l'un après l'autre).

J'utilise toujours Shift+Insert lorsque je veux coller du texte dans le terminal, fonctionne dans tous les programmes de terminal.

(Ce qui est aussi la raison pour laquelle je n'ai jamais d'ordinateur portable sur lequel vous ne pouvez pas appuyer Insert sans appuyer sur une touche secondaire)

  1. Si vous souhaitez copier coller le contenu dans le même fichier, utiliser yank et paste.

  2. Si vous souhaitez copier coller le contenu à travers les terminaux, ouvrez le premier fichier, en extrayant le texte souhaité, puis ouvrez votre deuxième fichier dans vim (par ex. :tabnew /path/to/second/file) et presse p pour le coller.

  3. Si vous souhaitez copier coller le contenu de vim à un programme externe, vous devez accéder au presse-papiers du système. Je suppose que vous utilisez Ubuntu. La version GUI de vim prend toujours en charge le presse-papiers, cependant, si vous souhaitez utiliser Vim à partir d'un terminal, vous devrez vérifier la prise en charge du presse-papiers X11.

    Dans la console, tapez:

    $ vim --version | grep xterm

    Si vous trouvez - xterm_clipboard, vous avez deux options:

    1) Compilez vim vous-même, avec l'indicateur xterm_clipboard activé

    2) Désinstaller vim, installer gvim (vim-gtk ou vim-gnome) à la place. Vous pouvez vous en tenir à vim non-gui en appelant vim depuis le terminal, de la même manière que vous le faisiez auparavant. Cette fois, lorsque vous vérifiez, vous devriez trouver +xterm_clipborad.

    Maintenant, lorsque vous tapez du texte dans le registre + dans votre éditeur vim (par exemple "+yy), il est également copié dans le presse-papiers du système que vous pouvez récupérer à partir de votre programme externe comme gedit editor, en utilisant Ctrl+V.

  4. Si vous souhaitez copier coller le contenu d'un programme externe dans vim, copiez d'abord votre texte dans le presse-papiers du système via Ctrl+C, puis dans l'éditeur vim mode insertion, cliquez sur le bouton du milieu de la souris (habituellement la roue) ou appuyez sur Ctrl+Shift+V coller.

    Ce sont 4 basiques copier et coller conditions liées à vim. J'espère que ça t'aidera.

Utilisez le bouton central de la souris pour insérer le texte que vous avez mis en surbrillance ailleurs.

Il est utile lorsque vous n'avez pas accès au presse-papiers de votre système (par exemple, dans une session SSH distante).

Doit être en mode édition / insertion pour Vim.

Une fois que vous entrez vi, appuyez sur i pour entrer en mode insertion, faites un clic droit dans le terminal, cliquez sur Coller.

Instructions détaillées pour copier / coller des lignes de texte dans vi en utilisant yank et put

(utilisez ce qui suit dans le mode de commande de vi)

Copie (YANK)

Pour copier une ligne dans vi:

  • En mode commande, déplacez le curseur sur la ligne à copier et tapez yy ou type Y

Pour copier 2 lignes dans vi:

  • En mode commande, déplacez le curseur sur la première ligne à copier et tapez 2yy ou type 2Y

(de même, n'importe quel nombre de lignes peut être copié)

Pour copier toutes les lignes de l'emplacement actuel à la fin du fichier:

  • En mode commande, déplacez le curseur sur la première ligne à copier et tapez yG

Pour copier tout le texte de l'emplacement actuel à la fin du mot actuel:

  • En mode commande, déplacez le curseur à l'emplacement à partir duquel le texte doit être copié et tapez yw

Pour copier tout le texte de l'emplacement actuel à la fin de la ligne:

  • En mode commande, déplacez le curseur à l'emplacement à partir duquel le texte doit être copié et tapez y$

Coller (METTRE)

Pour coller du texte dans le presse-papiers - après l'emplacement du curseur:

  • En mode commande, tapez p

Pour coller du texte dans le presse-papiers - avant l'emplacement du curseur:

  • En mode commande, tapez P

Avec Vim 8+ sous Linux ou Mac, vous pouvez désormais simplement utiliser la pâte native du système d'exploitation (ctrl+shift+V sur Linux, cmd+V sur Mac). Ne pas appuyer i pour le mode Insertion.

Il collera le contenu du presse-papiers de votre système d'exploitation, en préservant les espaces et les onglets sans ajouter d'auto-indentation. C'est équivalent à l'ancien :set paste, i, ctrl+shift+V, esc, :set nopaste méthode.

Tu n'as même pas besoin du +clipboard ou +xterm_clipboard les fonctionnalités de vim ne sont plus installées. Cette fonctionnalité est appelée "coller entre crochets". Pour plus de détails, voir https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim/56781763#56781763

J'ai eu un problème, car mon installation de Vim ne supportait pas Clipboard:

vim --version | grep clip-clipboard       +insert_expand   +path_extra      +user_commands+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

J'ai installé vim-gnome (qui supporte le presse-papiers) puis vérifié à nouveau:

vim --version | grep clipboard+clipboard       +insert_expand   +path_extra      +user_commands+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

Maintenant, je suis capable de copier et coller en utilisant "+y et "+p respectivement.

Tout d'abord, vérifiez si le support du presse-papiers est installé sur votre vim

:echo has('clipboard')

S'il renvoie 1, vous avez la prise en charge du presse-papiers

Pour copier dans le presse-papiers, vous devez soit sélectionner votre cible, disons un paragraphe vip et puis "+y, ce qui signifie au registre + copiez la partie sélectionnée ou vous pouvez simplement taper en mode normal: "+yip, ce qui signifie: au registre + copiez le paragraphe intérieur.

Pour coller à partir du presse-papiers en mode normal, vous pouvez:

"+p

En mode insertion, vous pouvez simplement Ctrl-rCtrl-o+. Cela insérera le contenu de votre presse-papiers et préservera toutes les indentations telles qu'elles se trouvent dans le presse-papiers.

Si vous souhaitez copier l'intégralité du tampon dans le presse-papiers, vous pouvez:

:%y+% ........ the whole filey ........ yank (copy)+ ........ to the clipboard

Pour copier la dernière commande dans le presse-papiers:

:let @+=@:

Pour copier la dernière recherche dans le presse-papiers:

 :let @+=@/

pour copier de la marque " a "jusqu'à la marque" b " dans le presse-papiers:

 :'a,'b y+

Pour tester n'importe quelle fonction qui se trouve dans le presse-papiers, vous pouvez

:@+    (and then type Enter):call FunctionName() (and then type Enter)

Pour voir ce qu'il y a dans le presse-papiers:

:reg +

Pour copier toutes les lignes qui ont "motif" dans le presse-papiers, vous pouvez:

:let @a="":[range]g/pattern/y A:let @+=@a:let @a="" ............ cleanses the register 'a':[range]g/pattern/y A   append to the register A every line with pattern:let @+=@a ............ copy register 'a' to the clipboard

Juste une note, la principale raison d’utiliser Vi est que Vim n’est pas installé. Si vous avez installé Vim, cela vaut probablement la peine de l’utiliser à la place. Il n’y a pas vraiment d’avantage à Vi à part qu’il est déjà présent sur chaque installation Unix. La meilleure façon d’apprendre Vim à mon avis est d’ouvrir votre émulateur de terminal (pas à partir de Vim) et de taper vimtutor Il vous mettra au courant de l’endroit où il vous est utilisable en environ 45 minutes.

+1 @BenMordecai - J’étais déjà familier avec vi( de l’ancien), y compris sa capacité de sous-shell pratique, mais j’avais besoin de cette actualisation. Super petit peu de tutorat. Je l’ai traversé comme une brise. Grâce.

Consultez ma réponse ici How to copy selected lines to clipboard in vim - Stack Overflow