Comment insérer du texte à la fin d'un groupe de lignes?

17

Disons que j'avais un bloc de texte ...

Lorem ipsum
Lorem ipsum dolor
Lorem ipsum dolor sit
Lorem ipsum dolor sit amet

... et je voulais insérer un .à la fin de chaque ligne. Quelle serait la meilleure approche pour y parvenir?

vim.ryan
la source

Réponses:

13

Je fais ce qui suit pour ajouter du texte à plusieurs lignes:

  • <c-V> - Passez en mode Visual Block.
  • Utilisez j/ kpour sélectionner les lignes.
  • $ - Déplacez le curseur sur le dernier caractère.
  • A - Entrez en mode d'insertion après le dernier caractère.
  • Insérez le texte souhaité.
  • <Esc> - Quittez le mode d'insertion et terminez l'ajout de bloc.

Par rapport à l'écriture :normaprès la sélection, il y a encore moins d'appuis sur les touches, mais la vraie raison pour laquelle j'utilise cela est parce qu'il est plus instinctif pour moi de travailler en mode Visual Block pour ce type de changements.

Vitor
la source
Très utile combiné avec le collage d'une colonne de texte .
Paul Rougieux
8

Sur la première ligne, tapez simplement: 4:norm A.

4et :créer une plage pour vous, puis norm A.ajoute le point à chaque ligne

Une autre solution pour les paragraphes plus longs pourrait être: Vip<C-v>$A.<Esc>

La première étape consiste à sélectionner le paragraphe avec Vipensuite vous passez en mode bloc visuel et déplacez le curseur à la fin de chaque ligne avec $puis vous ajoutez le .à chaque ligne avec A.et vous êtes arrivé en mode normal avec <Esc>pour voir le changement être appliqué à chaque ligne .

rbernabe
la source
Quelle est cette :Acommande? Je ne l'ai pas trouvé via:h :A
Peter Rincker
ma faute. En fait, je n'ai pas testé la réponse. Je le mets à jour. Il devrait utiliser la commande normale, tout comme @Kritixi Lhitos answer
rbernabe
Deux personnages de moins que 4:norm A.ne le serait4:s/$/.
Philippos
3

Vous pouvez d'abord les sélectionner visuellement en utilisant Vpuis utiliser les touches de déplacement pour sélectionner tout le texte (ou si le texte était strictement un paragraphe, vous pouvez le faire [à partir de la première ligne] V}). Et puis tapez :. Cela devrait faire apparaître quelque chose comme :'<,'>dans la ligne de commande.

:'<'>normal A.

Cela s'exécute normal A.sur les lignes sélectionnées. normal A.s'exécute A.comme des frappes en mode normal. Cela Asuspend un .à la fin de chacune des lignes sélectionnées.

Kritixi Lithos
la source
3

Si vous souhaitez ajouter un point à la fin de toutes les lignes:

:%norm A.

ou vous pouvez utiliser la recherche et remplacer:

:%s/$/./

% est le fichier entier, $ est la fin de la ligne

suivre
la source
Puisque @ vim.ryan a demandé un bloc de texte au lieu du fichier entier, :1,4s/$/./ qui remplace le dernier caractère par un point sur les lignes un à quatre inclusivement.
rjt
1

Pour le rendre un peu plus général, vous pouvez enregistrer une macro sur une seule ligne, puis la lire sur chaque ligne de la plage sélectionnée visuellement.

Enregistrez une macro dans un registre (le registre q dans cet exemple):

qqA.<Esc>q

Vous pouvez ensuite sélectionner visuellement les lignes sur lesquelles vous souhaitez opérer:

Vip

Et puis lisez votre macro sur chaque ligne (la plage sera remplie automatiquement):

:'<,'>norm @q
Zach Ingbretsen
la source