Quero realizar uma pesquisa e substituir. Uma nova linha antes de qualquer não dígito deve ser substituída por tabulação. tentei
%s/\n\D/\t/g
mas substituiu o primeiro caractere da palavra após a nova linha, o que não é o que eu queria, ou seja
abcd
abcd
para
abcd bcd
Quero preservar a
após a nova linha.
Responder1
Você está quase lá, mas sua expressão regular está substituindo a nova linhaeo não dígito com uma tabulação.
Que tal substituir cada nova linha seguida por um não dígito por uma tabulaçãoe esse mesmo não dígito?
%s/\n\(\D\)/\t\1/g
O escape é um pouco confuso, mas basicamente você tem um agrupamento em torno de \D
que irá capturar o que quer que seja o não dígito. Isso é então mencionado para \1
inseri-lo após a guia.
Responder2
Uma maneira de fazer isso é usar o marcador de final de partida:
%s/\n\ze\D/\t/
Outra maneira de fazer isso é usar lookahead negativo:
%s/\n\d\@!/\t/
Eles não são exatamente equivalentes, o segundo também substituirá a última nova linha em um arquivo.
Responder3
Eu espero que isso te ajude
:%s#\n.\D#\t#g