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.
Réponses
Trop de publicités?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 tapezY
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 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 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
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
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.
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