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

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

J’ai essayé le code sans succès

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

:%s/$/\*/g

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

Encore plus court que la commande: search:

 :%norm A* 

C’est ce que cela signifie:

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

Aussi:

 :g/$/norm A* 

Aussi:

 ggG$A* 

Je pense que l’utilisation du mode bloc visuel est une méthode meilleure et plus polyvalente pour gérer ce type de chose. Voici un exemple:

Ceci est la première ligne.
C’est le deuxième.
Le troisième.

Pour insérer “Bonjour tout le monde”. (espace + presse-papiers) à la fin de chacune de ces lignes:

  • Sur un caractère de la première ligne, appuyez sur Ctrl-V (ou Ctrl-Q si Ctrl-V est collé).
  • 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 espace puis tapez Hello world. + puis Esc.

Le résultat est:

Ceci est la première ligne. Bonjour le monde.
C’est le deuxième. Bonjour le monde.
Le troisième. Bonjour le monde.

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

Si tu veux append Hello world à la fin de chaque ligne:

 :%s/$/HelloWorld/ 

Si vous voulez faire cela pour un nombre spécifique de lignes, utilisez 20 à 30:

 :20,30s/$/HelloWorld/ 

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

 :20,30s/^/HelloWorld/ 

… et append (append le début de) chaque ligne avec *,

 %s/^/*/g 

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

 :%s/$/* 

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

 :14,18s/$/* 

ou

 :14,18norm A* 

Une option est:

:g/$/s//*

Cela trouvera chaque ancre de fin de ligne et la remplacera par * . Je dis “substitut” mais, en réalité, c’est plutôt un appendice puisque l’ancre est une chose spéciale plutôt qu’un personnage régulier. Pour plus d’informations, voir Puissance de g – Exemples .

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

Votre premier est correct n’importe où ailleurs, mais Vim doit avoir une gestion différente de la nouvelle ligne pour une raison quelconque.

 %s/\s*$/\*/g 

Cela fera l’affaire et assurera que les espaces de premier plan sont ignorés.