vim regex: s / ^ \ s * \ (. \) \ + / \\\ 1 / g mostra apenas o último caractere substituído

0

Preciso prefixar uma barra invertida \ para cada caractere em uma string, excluindo qualquer espaço em branco inicial. Eu acreditava que o seguinte faria o truque.

:s/^\s*\(.\)\+/\/g

mas produz este resultado para a string mostrada

   abcde
\e

i.e. mostra apenas o último desses substitutos, não cada um deles.

O Vim fornece dois mecanismos de regex, que você pode acessar explicitamente ao prefixar a sequência de pesquisa com '\% # = 1' ou '\% # = 2'. Ambos produzem o mesmo resultado.

Alguém poderia explicar o que estou fazendo errado aqui?

    
por user985675 20.04.2015 / 19:31

1 resposta

2

Seu regexp captura a string de entrada completa abcde captura o 'e' e substitui isso por \e .

Você provavelmente quer algo mais assim: :s/\S/\&/g

    
por 20.04.2015 / 19:38

Tags