I'estou tentando substituir cada ,
no arquivo atual por uma nova linha:
:%s/,/\n/g
Mas ele insere o que parece ser um ^@
em vez de uma nova linha real. O arquivo não está no modo DOS nem nada.
O que eu devo fazer?
Se você está curioso, como eu, veja a pergunta Por que é uma nova linha para a Vim? também.
\r' em vez de
\n'.A substituição por \n' insere um caracter nulo no texto. Para obter uma nova linha, utilize
\r'. Quando pesquisar por uma nova linha, você ainda usaria \n', no entanto. Esta assimetria deve-se ao fato de que
\n' e `\r' fazem coisas ligeiramente diferentes:
"não" corresponde a um fim de linha (nova linha), enquanto "não" corresponde a um retorno de carruagem. Por outro lado, em substituições \n' insere um caracter nulo enquanto
\r' insere uma nova linha (mais precisamente, é tratado como a entrada xxd
mostra um hexdump do arquivo resultante.
echo bar > test
(echo 'Before:'; xxd test) > output.txt
vim test '+s/b/\n/' '+s/a/\r/' +wq
(echo 'After:'; xxd test) >> output.txt
more output.txt
Before:
0000000: 6261 720a bar.
After:
0000000: 000a 720a ..r.
Em outras palavras, \n' inseriu o byte 0x00 no texto;
\r' inseriu o byte 0x0a.