Comment puis-je ajouter une chaîne à la fin de chaque ligne dans vim?
Question
Je veux ajouter *
à la fin de chaque ligne dans vim.
J'ai essayé en vain le code
:%s/\n/*\n/g
Autres conseils
Même plus courte que la commande: recherche:
:%norm A*
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:
gg<Ctrl-v>G$A*<Esc>
Je pense que l'utilisation du mode bloc visuel est une méthode plus efficace et plus polyvalent pour faire face à ce genre de chose. Voici un exemple:
Ceci est la première ligne.
C'est la deuxième.
Le troisième.
Pour insérer « Bonjour tout le monde. » (+ Espace presse-papier) à la fin de chacune de ces lignes:
- un caractère dans la première ligne, appuyez sur Ctrl-V (ou Ctrl-Q si Ctrl-V est une pâte).
- Appuyez sur pour étendre le J.-J. bloc visuel sur trois lignes.
- Appuyez sur $ pour étendre le bloc visuel à la fin de chaque ligne. appuyez sur A puis espace puis tapez Bonjour tout le monde. + Puis Esc.
Le résultat est:
Ceci est la première ligne. Bonjour tout le monde.
C'est la deuxième. Bonjour tout le monde.
Le troisième. Bonjour le monde.
(exemple de http://vim.wikia.com/wiki/Inserting_text_in_multiple_lines )
Si tu veux ajouter Bonjour tout le monde à la fin de chaque ligne:
:%s/$/HelloWorld/
Si vous voulez faire cela pour dire nombre précis de la ligne, de 20 à 30 utilisation:
:20,30s/$/HelloWorld/
Si tu veux le faire au début de chaque ligne puis utilisez:
:20,30s/^/HelloWorld/
... et à préfixer (ajouter le début) chaque ligne avec *,
%s/^/*/g
Vous ne avez pas vraiment besoin de la g
à la fin. Il devient donc:
:%s/$/*
Ou si vous voulez juste le *
à la fin, dites lignes 14-18:
:14,18s/$/*
ou
:14,18norm A*
L'une des options est:
:g/$/s//*
trouvera tous les point d'ancrage de fin de ligne et de le remplacer par *
. Je dis « substitut » mais, en réalité, il est plus d'une append puisque l'ancre est une chose particulière plutôt que d'un caractère régulier. Pour plus d'informations, consultez puissance de g - Exemples
:%s/\n/*\r/g
Votre premier est correct nulle part ailleurs, mais Vim doit avoir différentes newline manutention pour une raison quelconque.
%s/\s*$/\*/g
fera l'affaire, et d'assurer des espaces en tête sont ignorés.