web-dev-qa-db-fra.com

Comment puis-je insérer plusieurs lignes dans un registre?

Je souhaite extraire plusieurs lignes d'un même registre dans vim pour coller facilement différents modèles de texte dans un document.

Par exemple, "iyy n'utilise que la ligne en cours. Si j'essaie de sélectionner plusieurs lignes en mode visuel, elles ne sont pas écrites dans le registre.

Aucune suggestion?

40
ryz

Utilisez 3Y pour insérer 3 lignes dans le registre par défaut; "i3Y pour l'insertion dans le registre i.

De plus, mon moyen préféré n'est pas de compter les lignes que je veux tirer, mais de les sélectionner en mode visuel via V et les commandes de déplacement, puis d'appuyer sur y pour la tirer ou "_y pour la placer dans un registre.

De plus, je viens d’essayer de sélectionner plusieurs lignes en mode Visual Line et d’enfoncer dans le registre non défini par défaut, par exemple. Vjjj"oy - et ça marche.

57
ulidtko

À partir de n’importe où dans le fichier, vous pouvez utiliser les éléments suivants.

:2,5y a

Lignes 2 - 5. INTO REGISTER a

:7pu a

Coller enregistrer un sous ligne 7.

23
alock27

Utilisez m pour marquer le début, avec un nom de tampon (vous pouvez donc taper mx). Déplacez votre curseur vers le bas à l'endroit où vous souhaitez arrêter la copie et tapez y'x (ou d'x si vous effectuez un copier-coller). Ensuite, déplacez le sur l'endroit où vous souhaitez coller, puis tapez p.

La feuille de triche de la commande Vim

9
Nifle

Vous préfixez la commande avec un numéro pour obtenir le nombre de lignes sur lesquelles opérer. Vous pouvez également utiliser un 'objet texte' (comme ']' pour bloc et ')' pour paragraphe) - cela fonctionnerait sur plusieurs lignes de manière contextuelle - la valeur par défaut est souvent une seule ligne. Par exemple, "r5yy ferait cinq lignes commençant par le curseur dans le registre "r". (Vous pouvez aussi taper :.,+4y r pour faire la même chose en mode ex.) Vous pouvez également combiner des nombres avec des objets texte. "r10y).

6
Arcege

Il est possible d’appuyer plusieurs lignes au cas où il s’agirait d’une dernière occurrence de recherche.

Par exemple, si un motif multiligne non glouton :

/start\_.\{-}end/norm gn"iy

alors vous aurez votre modèle multiligne libéré (entre start et end) dans votre registre @i (imprimé par echo @i).

Related: Comment imprimer une correspondance sur plusieurs lignes? sur Vi

1
kenorb