Pesquisa e Substituição do Vim - Regex

0

Eu quero realizar uma pesquisa e substituir. Uma nova linha antes de qualquer dígito não deve ser substituído por aba. Eu 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

Eu quero preservar a após a nova linha.

    
por Rohail Abbas 24.06.2016 / 06:31

3 respostas

3

Você está quase lá, mas sua expressão regular está substituindo a nova linha e o não dígito por uma guia.

Que tal substituir cada nova linha seguida por um não-dígito com uma tabulação e esse mesmo não-dígito ?

%s/\n\(\D\)/\t/g

O escape é um pouco confuso, mas basicamente você tem um agrupamento em torno do \D que irá capturar qualquer que seja o não-dígito. Isso é então referido com para inseri-lo após a tabulação.

    
por 24.06.2016 / 08:34
1

Uma maneira de fazer isso é usar o marcador de correspondência final:

%s/\n\ze\D/\t/

Outra maneira de fazer isso é usar o 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.

    
por 24.06.2016 / 09:00
-2

Espero que isso ajude você

:%s#\n.\D#\t#g
    
por 24.06.2016 / 06:38