Comment copier le contenu de la pâte dans l'éditeur vi

165

J'ai essayé d'utiliser Ctrl+ Vpour coller du contenu dans un document de l'éditeur vi, mais Ctrl+ Vn'est pas interprété comme un collage .

Rpj
la source
16
Juste une note, la raison principale d'utiliser Vi est parce que Vim n'est pas installé. Si vous avez installé Vim, utilisez plutôt cette option. Vi n’a pas vraiment d’avantage à ce qu’il soit déjà présent sur toutes les installations Unix. La meilleure façon d'apprendre que Vim, à mon avis, consiste à ouvrir votre émulateur de terminal (pas à partir de Vim) et à taper vimtutorIl vous permettra de vous familiariser avec l'endroit où vous pourrez l'utiliser en environ 45 minutes.
Ben Mordecai
1
+1 @BenMordecai - Je connaissais déjà vi (de l'ancien), y compris sa fonctionnalité pratique de sous-shell, mais j'avais besoin de cette actualisation. Super petit peu de tutorat. Je suis passé à travers comme une brise. Merci.
Cbhihe

Réponses:

192

Tout d’abord, assurez-vous d’être 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 pastevim avant de coller pour désactiver l'indentation automatisée, etc. Après :set nopasteavoir collé le contenu.

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

Si vous souhaitez copier / coller des lignes vim(par opposition au collage du contenu du presse-papiers), vous devez vérifier la commande yank . Voici un aide- mémoire qui pourrait aider.

Attila O.
la source
1
Je pense que si vous avez le curseur de la souris, vous ne pouvez pas coller avec Ctrl + Maj + V.
Alvin Wong
14
Juste une note, le Iest sensible à la casse. La minuscule iest la manière habituelle d’entrer en mode insertion. Capital Iamène le curseur au début de la ligne, puis vous met en mode insertion.
Ben Mordecai
64

Vi (et Vim) fonctionne très différemment par rapport à un éditeur de texte tel que Gedit. Il a également une courbe d'apprentissage assez raide. Si vous souhaitez 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 dans le presse-papiers du système, vous pouvez, à partir du mode Normal, appuyer sur: "+p(Pas en même temps, mais les uns après les autres).

Daniel Jonsson
la source
3
C'est quelque chose que je ne savais pas jusqu'à présent. En outre, +1 pour la liaison d’un autre didacticiel génial avec vim.
Attila O.
19
En parlant de courbes d'apprentissage pour les éditeurs, il existe les "courbes d'apprentissage classiques pour certains éditeurs courants", blog.thilelli.net/public/store/attached/curves.jpg .
hlovdal
Dans le terminal GNOME, les raccourcis pour copier / coller sont respectivement Ctrl-Maj-C et Ctrl-Maj-V.
Flimm
1
J'ai essayé d'appuyer à tour de rôle <kbd> "</ kbd>, <kbd> + </ kbd> et <kbd> p </ kbd>, ainsi que <kbd>" </ kbd> et <kbd> p < / kbd> et rien ne s'est passé. Qu'est-ce que j'ai mal fait? Je n'utilise vipasvim
user907860
1
C'est la bonne réponse. En utilisant par exemple. Ctrl-Shift-v ne fonctionnera qu'avec le contenu le plus simple (les sauts de ligne et les indentations peuvent être très mauvais si vous êtes dans le terminal et que vous avez oublié de l'utiliser set :paste).
Rachel
29
  1. Si vous souhaitez copier le contenu de la colle dans le même fichier , utilisez yanket paste.

  2. Si vous souhaitez copier le contenu de la pâte sur les terminaux , ouvrez le premier fichier, en éditant le texte souhaité, puis ouvrez votre deuxième fichier dans vim (par exemple :tabnew /path/to/second/file) et appuyez sur ppour le coller.

  3. Si vous souhaitez copier le contenu de coller de vim dans un programme externe , vous devez accéder au Presse-papiers du système. Je suppose que vous utilisez Ubuntu. La version graphique de vim a toujours la prise en charge du presse-papiers. Toutefois, si vous souhaitez utiliser Vim depuis un terminal, vous devez vérifier la prise en charge de la prise en charge du presse-papiers X11.

    Sur la console, tapez:

    $ vim --version | grep xterm
    

    Si vous trouvez -xterm_clipboard , vous avez deux options:

    1) Compilez vim vous-même, avec le drapeau xterm_clipboard sur

    2) Désinstallez vim, installez plutôt gvim (vim-gtk ou vim-gnome). Vous pouvez vous en tenir à vim non-gui en appelant vim depuis le terminal, comme vous le faisiez auparavant. Lorsque vous vérifiez, vous devriez trouver + xterm_clipborad .

    Désormais, lorsque vous extrayez 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 extraire de votre programme externe, tel que l'éditeur gedit, en utilisant Ctrl+ V.

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

    Ce sont 4 conditions de base copier / coller liées à vim. J'espère que ça aide.

47dev47null
la source
Quel est le point de: tabnew / path / to / second / file? Vous pouvez obtenir exactement la même chose en tirant / copiant / coupant dans le premier fichier, en ouvrant le deuxième fichier avec: vi / chemin / vers / deuxième / fichier et en collant (p / P). Du moins dans mon cas ... Ou est-ce parce que la fonctionnalité vim de + xterm_clipboard est activée? Ou y a-t-il plus à tabnew que cela?
Cbhihe
1
Ubuntu vim-gtka un xterm_clipboardsupport et Fedora l’ xvima.
icc97
18

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

(C'est aussi la raison pour laquelle je n'ai jamais un ordinateur portable sur lequel vous ne pouvez appuyer Insertsans appuyer sur une touche secondaire)

Magnus Jonsson
la source
2
Vi/ Vim! = terminal;)
0xC0000022L le
1
ok ok, mais ça fonctionne toujours :)
Magnus Jonsson
+1 pour cela .. Qu'est-ce que vous utilisez pour jouer Ctrl+A, Ctrl+Caussi?
Arup Rakshit
Si j'utilise un terminal à l'intérieur d'un DE, je sélectionne généralement du texte avec la souris et copie avec Ctrl + Maj + C.
Magnus Jonsson
Shift + Insert fonctionne également dans gvim. (J'utilise Ubuntu 13.10, si cela fait une différence.)
mardi
10

Utilisez le bouton central de la souris pour insérer du texte que vous avez surligné ailleurs.

C'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.

will-ob
la source
6

Une fois que vous avez entré vi, appuyez sur ipour entrer en mode insertion, faites un clic droit sur le terminal, cliquez sur coller.

GC 13
la source
Je pensais être en minuscule i. Que font les majuscules I?
Flimm
@ Flimm déjà expliqué dans un commentaire de Ben Mordecai sur une autre réponse.
sierrasdetandil
J'ai modifié la réponse pour qu'elle soit en minuscule i. Les majuscules Idéplacent le curseur au début de la ligne avant d'entrer en mode insertion, ce qui n'est pas nécessaire ici.
Flimm
6

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

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

Copier (YANK)

Pour copier une ligne dans vi:

  • En mode commande, déplacez le curseur sur la ligne à copier et tapez yyou tapezY

Pour copier 2 lignes dans vi:

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

(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’endroit où 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’endroit où le texte doit être copié et tapez y$

Coller (PUT)

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
Slayernoah
la source
1

J'ai eu un problème, car mon installation de Vim ne supportait pas le presse-papiers :

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 peux copier et coller en utilisant "+ y et" + p respectivement.

Ashutosh Tripathy
la source
Cela a résolu mon problème!
astrojuanlu
1

Avec Vim 8+ sous Linux ou Mac, vous pouvez désormais utiliser simplement le collage natif du système d'exploitation ( ctrl+shift+Vsous Linux, cmd+Vsur Mac). Ne pas appuyer sur ipour 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-identification. Il est équivalent à l'ancienne :set paste, i, ctrl+shift+V, esc, :set nopasteméthode.

Vous n'avez même plus besoin d'installer les fonctionnalités de +clipboardou +xterm_clipboardvim. Cette fonctionnalité est appelée "pâte entre crochets". Pour plus de détails, voir https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim/56781763#56781763

sage
la source
C'est la réponse que je cherche. Puisque Vim n’est pas installé par défaut sur les distributions gnu / linux, il doit être installé même dans Ubuntu. De plus, les boutons haut et bas de Vi ne fonctionnent pas sur Ubuntu et ne sont pas surlignés.
itsnotmyrealname
0

Si vous êtes root : Ctrl+ Shift+V

Si vous n'êtes pas root : Cliquez au centre de la souris.

Vue elliptique
la source
0

Je voulais juste noter que, si vous utilisez Vim via Git Bash sous Windows, vous pouvez simplement utiliser pou cliquer au centre de la souris sans être en mode insertion. En utilisant Vim via PuTTY , vous pouvez faire un clic droit. Et en soulignant fait la copie.

Je l'ai noté parce que je ne suis pas arrivé ici parce que c'est SE pour Ubuntu.

Autres commandes utiles:

  • yy(nombre de lignes) - yank (copie)
  • dd(nombre de lignes) - supprimer
  • p - coller la ligne sous la ligne actuelle
  • Shift+ p- colle la ligne au-dessus de la ligne actuelle
  • u - annuler
  • r - refaire
  • i - mode d'insertion
  • v - mode visuel
Tyler Christian
la source
Cela n'a pas fonctionné pour moi sur Windows Git Bash. Quelle console utilisez-vous, mintty ou windows cmd?
Wisbucky
Je crois que c'était mentholé.
Tyler Christian le
0

Vous pouvez utiliser Ctrl+ Shift+ Vpour coller dans la version de terminal vim, mais pour la version graphique Neovim-Qt, comme par exemple , coller du texte depuis le Presse-papiers du système avec Ctrl+ Shift+ Vne fonctionnera tout simplement pas. Vous devez accéder au presse-papiers "+ou "*à l'éditeur vim.

Ajouter un nouveau raccourci clavier .vimrcsimplement les commandes copier / coller:

" paste from system clipboard, align indentation with surroundings
noremap <Leader>p "*]p:set nopaste<CR>
" copy a sentence into system clipboard
noremap <Leader>y "+y)
Yossarian42
la source