Quiero realizar una búsqueda y reemplazar. Una nueva línea antes de cualquier elemento que no sea un dígito debe reemplazarse con una tabulación. Lo intenté
%s/\n\D/\t/g
pero reemplazó el primer carácter de la palabra que sigue a la nueva línea, que no es lo que quería, es decir
abcd
abcd
a
abcd bcd
Quiero conservar a
después de la nueva línea.
Respuesta1
Ya casi has llegado, pero tu expresión regular está reemplazando tanto la nueva líneayel que no es dígito con una pestaña.
¿Qué tal si reemplazamos cada nueva línea seguida de una que no sea un dígito con una pestaña?y ese mismo no dígito?
%s/\n\(\D\)/\t\1/g
El escape es un poco complicado, pero básicamente tienes una agrupación alrededor \D
que capturará lo que no sea un dígito. Luego se hace referencia a esto \1
para insertarlo después de la pestaña.
Respuesta2
Una forma de hacerlo es utilizar el marcador de final de partido:
%s/\n\ze\D/\t/
Otra forma de hacerlo es utilizar una búsqueda anticipada negativa:
%s/\n\d\@!/\t/
No son exactamente equivalentes, la segunda también reemplazará la última nueva línea en un archivo.
Respuesta3
Espero que esto ayude
:%s#\n.\D#\t#g