Tengo algo parecido a <Foobar Name='Hello There'/>
y necesito cambiar las comillas simples por comillas dobles. Intenté :s/\'.*\'/\"\0\"
pero terminó produciendo <Foobar Name="'Hello There'"/>
. Reemplazar el \0
con \1
solo produjo una cadena en blanco dentro de las comillas dobles - ¿hay alguna sintaxis especial que me falta que necesito para hacer que solo la cadena encontrada ("Hola allá") entre las comillas se asigne a \1
?¿Reemplazar las comillas alrededor de las cadenas en Vim?
Respuesta
Es necesario utilizar agrupaciones:
:s/\'\(.*\)\'/\"\1\"
De esta manera el argumento 1 (es decir, \ 1) se corresponderá con lo que está delimitada por \ (y \).
Debe colocar corchetes alrededor de la parte de la expresión que desea capturar.
s/\'\(.*\)\'/"\1"/
Pero, puede tener problemas con la coincidencia involuntaria. ¿Podría simplemente reemplazar cualquier comilla simple con comillas dobles en su archivo?
a menos que me falta algo, ¿no funcionaría s/\'/"/g
?
Tiene la idea correcta: desea tener "\1"
como su cláusula de reemplazo, pero primero debe colocar la parte "Hola" en el grupo de captura 1 (0 es la coincidencia completa). Proveedores:
:%/'\(.*\)'/"\1"
%s/'\([^']*\)'/"\1"/g
Usted tendrá que usar [^']*
en lugar de .*
lo contrario
'apples' are 'red'
obtendría convertido a "apples' are 'red"
O use '. \ {-}' en lugar de '. *'. Ver ': ayuda/\ {-'. –
También hay surround.vim, si usted está mirando para haz esto con bastante frecuencia Utilizaría cs'"
para cambiar las comillas circundantes.
Gracias por el enlace surround.vim: hace mucho que deseaba esto. – ThomasH
¿hay alguna manera de asignar esto a algún comando de líder? No puedo hacerlo: \ –
No debería necesitar asignar esto a un comando de líder, ya que está usando un movimiento 'cs' personalizado con dos argumentos -' '' como destino, y '" 'como el reemplazo. – kejadlen
Sólo un FYI - para reemplazar todas las comillas dobles con sencillo, se trata de la expresión regular correcta - basado en el ejemplo de arriba rayd09
:%s/"\([^"]*\)"/'\1'/g
Suponiendo que quiere hacer esto en un archivo completo ...
Modo N:
ggvG$ [SHIFT+:]
Modo X:
'<,'>/'/" [RET]
- 1. Cómo reemplazar las comillas (")
- 2. ¿Desea eliminar las comillas dobles de las cadenas
- 3. Posible resaltar las comillas coincidentes en vim?
- 4. Javascript reemplazar las comillas dobles con barra
- 5. ¿Cómo puedo reemplazar las comillas dobles con comillas simples
- 6. Cuándo ajustar las comillas alrededor de una variable de shell?
- 7. Reemplazar comillas en Javascript?
- 8. Haskell: Suprime comillas alrededor de las cuerdas cuando se muestra
- 9. Uso de izquierda comillas dobles en las cadenas en VB
- 10. En Vim, ¿cómo elimino todo dentro de las comillas dobles?
- 11. ¿Cómo reemplazar las comillas en una cadena usando Javascript?
- 12. ¿Cómo manejar las comillas simples en las constantes de internacionalización?
- 13. Reemplazar todas las comillas dobles dentro de String
- 14. Compleción de zsh dentro de las cadenas entre comillas
- 15. ¿Cómo reemplazar solo las coincidencias de palabra completa en Vim?
- 16. ¿Cómo uso string.tr para reemplazar las comillas dobles por las únicas en Ruby?
- 17. Reemplazar todas las instancias de carácter entre etiquetas con vim
- 18. ¿Cómo reemplazar todas las comillas dobles por comillas simples usando mysql replace?
- 19. ¿Cómo reemplazar todas las comillas dobles por comillas simples usando jquery?
- 20. Grep con las comillas
- 21. En C#: Añadir comillas alrededor de cadena en una lista separada por comas de cadenas
- 22. Aunque las comillas mágicas están desactivadas, ¿todavía se han escapado las cadenas?
- 23. ¿Separe la cadena en las comas pero ignore las comas dentro de las comillas dobles?
- 24. ¿Qué hacen exactamente las comillas alrededor del nombre de la tabla?
- 25. ¿Estoy escapando las cadenas incorrectamente en JavaScript?
- 26. Reemplazar las comillas dobles e individuales en la cadena de Javascript
- 27. ¿Cómo reemplazar las comillas dobles en la transformación de columna derivada?
- 28. Python CSV: Quite las comillas del valor
- 29. Alrededor de las esquinas de una imagen
- 30. Rodee dos palabras con comillas en Vim
Ese fue mi compromiso, pero sentí que no estaba del todo bien, especialmente si había una sola comilla dentro del atributo. No creo que eso pueda suceder en XML, pero podría suceder en alguna otra situación que necesite esta misma solución. – ravuya
Una comilla simple dentro de un atributo entre comillas simple debe ser ''' y una comilla doble dentro de un atributo de comillas dobles debe ser '"'. Por supuesto, una sola cita podría vivir dentro de un atributo de doble cita y viceversa ... – ephemient