50 votes

Comment brancher plusieurs lignes dans un registre ?

J'aimerais pouvoir extraire plusieurs lignes dans un seul registre dans vim, pour coller facilement différents modèles de texte dans un document.

Par exemple, "iyy n'arrache que la ligne courante, si j'essaie de sélectionner plusieurs lignes en mode visuel, ce n'est pas écrit dans le registre.

Des suggestions ?

71voto

ulidtko Points 2796

Utilisation 3Y pour brancher 3 lignes dans le registre par défaut ; "i3Y pour l'inscription au registre i.

De plus, ma méthode préférée consiste à ne pas compter les lignes que je veux arracher, mais à les sélectionner en mode visuel via V et les commandes de déplacement, puis appuyez sur y pour l'arracher ou "_y de tirer sur un registre.

J'ai également essayé de sélectionner plusieurs lignes en mode Visual Line et de les placer dans un registre autre que celui par défaut, par exemple Vjjj"oy - et cela fonctionne.

30voto

awilkening Points 409

À partir de n'importe quel endroit du fichier, vous pouvez utiliser la méthode suivante.

:2,5y a

Prélever les lignes 2 à 5. DANS LE REGISTRE a

:7pu a

Coller le registre a sous la ligne 7.

10voto

user2013 Points 2301

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

L'aide-mémoire des commandes Vim

7voto

Arcege Points 2033

Vous devez faire précéder la commande d'un nombre 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 va placer cinq lignes commençant par le curseur dans le registre 'r'. (Vous pouvez également taper :.,+4y r pour faire la même chose en mode ex). Vous pouvez également combiner des nombres avec des objets textuels ; "r10y) .

1voto

kenorb Points 22006

Il est possible de supprimer plusieurs lignes dans le cas où il s'agit d'une dernière occurrence de recherche.

Par exemple, compte tenu de ce qui suit un modèle multiligne non gourmand :

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

vous obtiendrez alors votre motif multiligne arraché (entre start y end ) dans votre @i registre (imprimé par echo @i ).

En rapport : Comment imprimer une correspondance sur plusieurs lignes ? à Vi

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