Editar: Teniendo en cuenta la nueva información, la sustitución de abajo probablemente funcionaría:
:%s/<filename>\zs.\{-}\ze<\/filename>/\=substitute(submatch(0), '\/', '\', 'g')/
Explicación:
%s
: sustituto a través de todo el archivo
/<filename>
: comienzo del patrón y estático texto para que coincida con
\zs
: comienzo del texto correspondiente
.\{-}
: cualquier carácter, no codicioso
\ze
: final del texto coincidente
<\/filename>/
: fin de la etiqueta y el patrón
\=
objetivo: evaluar la sustitución como una expresión vim
substitute(submatch(0), '\/', '\', 'g')/
: reemplazar todos /
's con \
en el texto combinado.
Respuesta original:
voy a suponer que quieres decir etiquetas de estilo XML aquí. Lo que haría es seleccionar visualmente el área en la que desea operar, luego usar el átomo de expresión regular \%V
para operar solo en esa selección.
vit:s!\%V/!\\!g
Debería hacer el truco. Tenga en cuenta que al pulsar :
, vim añadirá automáticamente un rango para la selección visual, el comando real de sustitución se verá así:
:'<,'>s!\%V/!\\!g
@ewok Lo que lo convierte en uno diferente de los otros cientos de editor -¿preguntas relacionadas? – deviousdodo
@ewok: está bastante bien establecido que las preguntas vim (particularmente las preguntas regulares como esta) caen directamente en la categoría de "herramientas de software comúnmente usadas por los programadores" explícitamente enumeradas como "sobre el tema" en la pregunta – jkerian