231 votes

Comment copier-coller le contenu dans l'éditeur vi

J'ai essayé d'utiliser Ctrl + V pour coller le contenu dans un document de l'éditeur vi, mais Ctrl + V n'est pas interprété comme un collage.

8voto

GC 13 Points 281

Une fois que vous avez entré vi, appuyez sur i pour passer en mode insertion, faites un clic droit dans le terminal, cliquez sur coller.

7voto

slayernoah Points 279

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

(utiliser 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 qui doit être copiée et tapez yy ou tapez Y

Pour copier 2 lignes en vi :

  • En mode commande, déplacez le curseur sur la première ligne qui doit être copiée et tapez 2yy ou tapez 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 qui doit être copiée et tapez yG

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

  • En mode commande, déplacez le curseur à l'endroit d'où le texte doit être copié et tapez yw

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

  • En mode commande, déplacez le curseur à l'endroit d'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

6voto

wisbucky Points 2233

Avec Vim 8+ sous Linux ou Mac, vous pouvez désormais utiliser le collage natif du système d'exploitation ( ctrl+shift+V sur Linux, cmd+V sur Mac). N'appuyez pas sur i pour le mode d'insertion.

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

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

2voto

me_astr Points 181

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 prend en charge le presse-papiers) et j'ai 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.

2voto

Kris Erickson Points 16204

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

:echo has('clipboard')

Si le résultat est 1, vous avez le support du presse-papiers.

Pour copier dans le presse-papiers, vous devez sélectionner votre cible, par exemple un paragraphe. vip et ensuite "+y ce qui signifie au registre + copier la partie sélectionnée ou vous pouvez simplement taper en mode normal : "+yip ce qui signifie : au registre + copier 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+ . Tha insérera le contenu de votre presse-papiers et préservera toutes les indentations telles qu'elles sont sur le presse-papiers.

Si vous souhaitez copier l'ensemble de la mémoire tampon dans le presse-papiers, vous pouvez le faire :

:%y+
% ........ the whole file
y ........ 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 qui se trouve dans le presse-papiers :

:reg +

Pour copier toutes les lignes qui ont un "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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X