2009-05-18 6 views

Respuesta

16

Trate

:%s/\[\(\d\+\)\]/\=join(['[', submatch(1) - 1, ']'], '')/g 

EDIT: He añadido una \+ después \d en caso de que quería coincidir con más de un número de un solo dígito.

Ver :help sub-replace-special

+0

impresionante! ¿Conoces alguna buena documentación sobre el uso de \ = en la búsqueda y el reemplazo? –

+0

Probar: ayuda sub-replace-expression – sykora

0

Prueba esto:

%s:\d:\r&\r:g 

Entonces

s/\d/\=submatch(0)-1/ 

Y ahora lo que necesita para unirse a las líneas.

2

Cuando se utiliza \zs y \ze para anclar el número dentro de los corchetes y no alcancen su, la sustitución se hace más simple, debido a que no es necesario para concatenar en la sustitución:

:%s/\[\zs\d\+\ze]/\=submatch(0)-1/g 
Cuestiones relacionadas