Je veux ajouter *
à la fin de chaque ligne dans Vim.
J'ai essayé le code sans succès
:%s/\n/*\n/g
:%s/$/\*/g
devrait marcher. Donc, :%s/$/*/g
comme MrWiggles indique correctement.
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
Aussi:
:g/$/norm A*
Aussi:
gg<Ctrl-v>G$A*<Esc>
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:
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 )
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/
... et ajouter (ajouter le début de) chaque ligne avec *,
%s/^/*/g
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*
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 .
:% 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.
%s/\s*$/\*/g
cela fera l'affaire et garantira que les espaces de début sont ignorés.