101 votes

comment ajouter des lignes à un registre vim sans l'écraser

J'aimerais tirer une ligne dans une caisse : "{register}y mais sans écraser ce qui se trouvait précédemment dans le registre. J'ai souvent besoin de copier des lignes non contiguës dans un registre, et j'aimerais parfois utiliser les registres comme une pile.

Ejemplo:

line1
line2
line3

Je veux copier line1 en plaçant le curseur dessus et en saisissant "ay puis continue line3 et faire "ay . Ensuite, quand je ferai "ap , LES DEUX line1 ET line3 sera collé.

Est-ce possible sans plugins ? avec plugins ?

0 votes

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

149voto

MarkB Points 1741

Si vous voulez ajouter à un registre nommé, utilisez le caractère majuscule correspondant. Par exemple, dans votre exemple :

"ayy
"Ayy
"ap

13 votes

Existe-t-il un moyen d'ajouter un registre sans nom ? (le principal)

3 votes

0 votes

Pour éviter aux gens de visiter une page ^^, il est plus facile, selon moi, d'utiliser le registre nominatif. Quand vous tapez "a", pensez à "utiliser le registre a ...". "A 'ajouter au registre a'

12voto

Rob Wells Points 21714

Pour compléter la réponse de MarkB, saviez-vous que vous pouvez également utiliser des marqueurs pour sélectionner un bloc de texte pour votre joker ?

Allez à la première ligne du bloc que vous voulez arracher et entrez la commande mark après avoir sélectionné une lettre comme marqueur, par ex.

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

puis allez en bas du bloc que vous voulez arracher et entrez la commande :

:'a,.ya A

cette commande signifie prendre le bloc de texte de la ligne contenant mon marqueur appelé a jusqu'à la ligne actuelle et le transférer dans le tampon a. Les mêmes règles que celles mentionnées par MarkB s'appliquent, utiliser le nom du tampon en minuscules pour écraser le tampon. Utilisez le nom du tampon en majuscules pour ajouter au tampon. Donc, dans ce cas, le contenu du tampon a sera ajouté.

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

Par ailleurs, 'a (apostrophe a) fait référence à la ligne contenant le marqueur a. `a (apostrophe a) fait référence au caractère situé sous le curseur lorsque vous avez saisi ma.

d`a (also entered in command mode)

est utile car il efface le texte entre le caractère marqué par le marqueur a jusqu'au caractère juste avant le caractère où se trouve actuellement votre curseur.

0 votes

'a,.ya A fonctionne mais quand j'essaie avec la coche devant a --> `a il dit : E492 : Pas une commande d'éditeur : `a,.ya A. Il aurait été utile de ne pas utiliser de lettre autre que a pour le marqueur dans l'exemple, afin que l'on sache clairement quelle lettre correspond à quelle chose :)

0 votes

Quand utiliserais-je cela alors que je peux utiliser le mode visuel pour sélectionner le texte à arracher ?

0 votes

@Ralph C'est juste une question de comment votre cerveau fonctionne quand vous codez. Si vous avez l'habitude de faire les choses en utilisant une interface graphique, alors continuez à l'utiliser. Je trouve que l'utilisation de cette technique m'aide à rester en "mode code" où mon esprit pense en termes de blocs de fonctionnalités qui peuvent être réutilisés. HTHs

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X