2008-12-19 8 views
72

Je voudrais ajouter une ligne dans un registre: "{register}y mais sans écraser ce qui était auparavant dans le registre. J'ai souvent besoin de copier des lignes non contiguës dans un registre, et j'aimerais utiliser parfois les registres comme une pile.comment ajouter des lignes à un registre vim sans l'écraser

Exemple:

line1 
line2 
line3 

Je veux copier line1, en plaçant le curseur dessus et en entrant "ay, puis passe line3 et faire "ay. Ensuite, quand je vais faire "ap, BOTH line1 et line3 seront collés.

Est-ce possible sans plugins? avec des plugins?

+0

Idéal pour faire une liste rapide de définitions en haut du fichier. –

Répondre

110

Si vous souhaitez ajouter à un registre nommé, utilisez son caractère majuscule correspondant. à savoir Dans votre exemple:

 
"ayy 
"Ayy 
"ap 
+8

Y a-t-il un moyen possible d'ajouter à un registre non nommé? (le principal) – Zaffy

+3

@Zaffy http://stackoverflow.com/questions/18536511/vim-how-to-append-yanked-text-to-unnamed-register – PonyEars

11

Juste pour développer la réponse MarkB, saviez-vous que vous pouvez également utiliser des marqueurs pour sélectionner un bloc de texte pour votre coup sec?

Accédez à la première ligne du bloc que vous souhaitez insérer et entrez la commande de marquage après avoir sélectionné une lettre comme repère, par ex.

ma (entered in command mode, i.e. no colon) 

puis aller au fond du bloc que vous voulez Yank et entrez la commande:

:'a,.ya A 

ce moyen de commande prennent le bloc de texte de la ligne contenant mon marqueur appelé à la ligne en cours et le tirez dans le tampon a. Les mêmes règles que celles mentionnées par MarkB s'appliquent, utilisez le nom du tampon en minuscules pour remplacer le tampon. Utilisez le nom du tampon majuscule pour ajouter au tampon. Donc, dans ce cas, cela s'ajoutera au contenu du tampon a.

N.B. Le 'a' utilisé pour votre marqueur n'a rien à voir avec le 'a' utilisé pour sélectionner votre registre. (AFAIK mais YMMV)

BTW 'a (apostrophe a) fait référence à la ligne contenant le marqueur a. `a (backquote a) fait référence au caractère sous le curseur lorsque vous avez entré ma.

`ad`b (also entered in command mode) 

est utile, car elle supprime le texte entre le caractère marqué par le marqueur jusqu'à un caractère juste avant le caractère que vous avez marqué avec le marqueur b.

+0

'a, .ya A fonctionne mais quand j'essaye la coche devant un -> \ 'a il dit: E492: Pas une commande d'éditeur: \' a, .ya A. Aurait aidé à ne pas utiliser une lettre autre que pour le marqueur dans l'exemple de sorte qu'il est clair quelle lettre est quelle chose :) –

Questions connexes