web-dev-qa-db-fra.com

Comment puis-je ajouter une chaîne à la fin de chaque ligne dans Vim?

Je veux ajouter * à la fin de chaque ligne dans Vim.

J'ai essayé le code sans succès

:%s/\n/*\n/g
238

:%s/$/\*/g

devrait marcher. Donc, :%s/$/*/g comme MrWiggles indique correctement.

330
dirkgently

Même plus court que la commande: search:

:%norm A*

Voici ce que cela signifie:

 %       = for every line
 norm    = type the following commands
 A*      = append '*' to the end of current line
325
Cyber Oliveira

Aussi:

:g/$/norm A*

Aussi:

gg<Ctrl-v>G$A*<Esc>
41
Brian Carper

Je pense que l’utilisation du mode bloc visuel est une méthode plus efficace et plus polyvalente pour traiter ce type de problème. Voici un exemple:

Ceci est la première ligne.
Ceci est la seconde.
Le troisième.

Pour insérer "Bonjour le monde." (espace + presse-papier) à la fin de chacune de ces lignes:

  • Sur un caractère de la première ligne, appuyez sur Ctrl-V (ou sur Ctrl-Q si Ctrl-V est coller).
  • Appuyez sur jj pour étendre le bloc visuel sur trois lignes.
  • Appuyez sur $ pour étendre le bloc visuel à la fin de chaque ligne. Appuyez sur A puis sur espace puis tapez Hello world. + puis Esc.

Le résultat est:

Ceci est la première ligne. Bonjour le monde.
Ceci est la seconde. Bonjour le monde.
Le troisième. Bonjour le monde.

(exemple de http://vim.wikia.com/wiki/Inserting_text_in_multiple_lines )

27
nicole

Si vous voulez ajouter Bonjour tout le monde à la fin de chaque ligne:

:%s/$/HelloWorld/

Si vous voulez le faire pour un nombre spécifique de lignes, utilisez entre 20 et 30:

:20,30s/$/HelloWorld/

Si vous voulez le faire au début de chaque ligne, utilisez:

:20,30s/^/HelloWorld/
10
utkarsh

... et ajouter (ajouter le début de) chaque ligne avec *,

%s/^/*/g
5
JohnnyCoder

Vous n'avez pas vraiment besoin de la g à la fin. Alors ça devient:

:%s/$/*

Ou si vous voulez juste le * à la fin de, dites les lignes 14-18:

:14,18s/$/*

ou

:14,18norm A*
5
Pedro Norwego

Une option est:

:g/$/s//*

Ceci trouvera chaque ancre de fin de ligne et la remplacera par *. Je dis "substitue" mais, en réalité, c'est plus une annexe puisque l'ancre est une chose spéciale plutôt qu'un personnage ordinaire. Pour plus d'informations, voir Puissance de g - Exemples .

4
paxdiablo
:% s/\ n/*\r/g

Votre première est correcte ailleurs, mais Vim doit avoir une gestion de nouvelle ligne différente pour une raison quelconque.

3
user42092
%s/\s*$/\*/g

cela fera l'affaire et garantira que les espaces de début sont ignorés.

1
ng.