Mevcut dosyadaki her ,
satırını yeni bir satırla değiştirmeye çalışıyorum:
:%s/,/\n/g
Ancak gerçek bir satırsonu yerine ^@
gibi görünen bir şey ekler. Dosya DOS modunda ya da başka bir şeyde değil.
Ne yapmalıyım?
Benim gibi merak ediyorsanız Vim için \r neden satırsonu? sorusuna da göz atın.
\n
yerine \r
kullanın.\n
ile değiştirildiğinde metne null karakteri eklenir. Satırsonu almak için \r
kullanın. Ancak bir satırsonu ararken yine de \n
kullanmanız gerekir. Bu asimetri, \n
ve \r
`nin [biraz farklı şeyler yapmasından] kaynaklanmaktadır (http://vim.wikia.com/wiki/Search_and_replace):
\n
satır sonu (newline) ile eşleşirken, \r
satır başı ile eşleşir. Öte yandan, ikamelerde \n
boş karakter eklerken, \r
satırsonu karakteri ekler (daha doğrusu,
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.
Başka bir deyişle, \n
0x00 baytını metne eklemiştir; \r
0x0a baytını eklemiştir.