Le remplacement des guillemets autour des chaînes dans Vim?
J'ai quelque chose qui ressemble à <Foobar Name='Hello There'/>
et la nécessité de changer les guillemets simples pour des guillemets doubles. J'ai essayé :s/\'.*\'/\"\0\"
mais il a fini par produire <Foobar Name="'Hello There'"/>
. Remplacement de la \0
avec \1
seulement produit une chaîne vide à l'intérieur de guillemets doubles - est-il une syntaxe particulière qui me manque, que j'ai besoin de ne faire que le trouvé string ("Bonjour") à l'intérieur de guillemets, de céder à \1
?
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser des regroupements:
De cette façon, l'argument 1 (ie, \1) correspond à ce qui est délimitée par \( et \).
Il y a aussi surround.vim, si vous cherchez à faire assez souvent. Vous pouvez utiliser
cs'"
de changer environnant les guillemets.cs
mouvement avec deux arguments -'
comme cible, et"
que le remplacement.%s/'\([^']*\)'/"\1"/g
Vous souhaitez utiliser
[^']*
au lieu de.*
sinon'apples' are 'red'
serait converti à"apples' are 'red"
.\{ - }
au lieu de.*
. Voir:help /\{ -
.à moins que je me manque quelque chose, ne serait pas
s/\'/"/g
travail?'
et un double guillemet à l'intérieur d'un double-cité de l'attribut doit être"
. Bien sûr, une seule citation peut vivre à l'intérieur d'un double-cité de l'attribut, et vice-versa...Juste un avis à remplacer tous les guillemets simples, c'est la bonne expression rationnelle basée sur rayd09 l'exemple ci-dessus
Vous avez besoin de mettre des parenthèses autour de la partie de l'expression que vous souhaitez capturer.
Mais, vous pourriez avoir des problèmes involontaires de correspondance. Pourriez-vous être en mesure de simplement remplacer les guillemets simples avec des guillemets dans votre fichier?
Vous avez eu la bonne idée -- vous voulez avoir
"\1"
que votre remplacement de la clause, mais vous avez besoin de mettre le "Bonjour" dans le cadre du groupe de capture 1 premier (0 est l'ensemble du match). Essayez::%/'\(.*\)'/"\1"
En supposant que vous voulez le faire sur la totalité d'un fichier ...
N Mode:
Mode X: