Ik probeer elke ,
in het huidige bestand te vervangen door een nieuwe regel:
:%s/,/\n/g
Maar het voegt iets in wat lijkt op een ^@
in plaats van een echte nieuwe regel. Het bestand staat niet in DOS mode of zo.
Wat moet ik doen?
Als je net als ik nieuwsgierig bent, kijk dan ook eens naar de vraag Waarom is ^@
een nieuwe regel in Vim?.
r
in plaats van n
.Vervanging door n` voegt een null teken in de tekst in. Om een nieuwe regel te krijgen, gebruikt u
r. Als u echter *zoekt* naar een nieuwe regel, gebruikt u nog steeds ``n
. Deze asymmetrie is te wijten aan het feit dat n` en
r` iets andere dingen doen:
n` komt overeen met een regeleinde (newline), terwijl
rovereenkomt met een carriage return. Aan de andere kant, in substituties voegt ``n
een null karakter in, terwijl `r
een newline invoegt (meer precies, het wordt behandeld als de invoer xxd
toont een hexdump van het resulterende bestand.
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.
Met andere woorden, heeft de byte 0x00 in de tekst ingevoegd;
heeft de byte 0x0a ingevoegd.