Quelle est la meilleure façon d'ajouter des caractères au début et à la fin de chaque ligne? Cela peut-il être fait en utilisant Vim, ou d'une autre manière?
En vim, vous pouvez faire
:%s/^\(.*\)$/"\1"/
s/regex/replace/
est la commande vim pour la recherche n remplacer.%
le fait appliquer tout au long du fichier^
et $
indique respectivement le début et la fin de la ligne.(.*)
capture tout entre les deux. (
et )
doit être échappé dans les expressions rationnelles vim.\1
place le contenu capturé entre deux guillemets.plus simple:
%s/.*/"&"
Explication: Par défaut, un modèle est interprété comme la plus grande correspondance possible, donc .*
est interprété comme la ligne entière, sans besoin de ^
et $
. Et tandis que \(
...\)
peut être utile pour sélectionner une partie d'un motif, il n'est pas nécessaire pour tout le motif, qui est représenté par &
dans la substitution. Et la finale /
dans une recherche ou une substitution n'est pas nécessaire sauf si quelque chose d'autre suit; mais le laisser de côté pourrait être considéré comme de la paresse. (Si oui, je suis paresseux.)
Les deux réponses suggérant %s
sont parfaits, et j'espère que vous apprendrez à aimer %s
et l'utiliser souvent. Mais si vous vous retrouvez à vouloir entourer fréquemment d'autres blocs de texte, vous vous devez de vérifier le plugin surround.vim , qui vous permettra de faire ce que vous avez demandé avec les quatre touches suivantes : yss"
Et il existe de nombreuses autres cibles surround intégrées utiles. Par exemple, pour entourer le mot actuel avec des guillemets doubles: csw"
, et pour remplacer les guillemets simples environnants par des guillemets doubles: cs'"
.
surround.vim est l'un de mes plugins vim préférés, et je l'utilise quotidiennement.
un meilleur usage serait sed (surtout si vous avez besoin de l'écrire)
cat foo.txt | sed s/^\(.*\)$/"\1"/g