Curiosamente, \n no vim para substituição não significa nova linha, mas nula. ASCII nul é ^@ ( controle @ ).
Historicamente, vi substitui ^M ( controle M ) pela terminação de linha, que é a nova linha. O vim adicionou uma extensão \r (como a linguagem C) para significar o mesmo que ^M , mas os desenvolvedores escolheram fazer \n mean null quando substituindo texto. Isso é inconsistente com seu uso em pesquisas , que localizam uma nova linha.
Leitura adicional:
- Pesquise e substitua (wiki do Vim)
- vim substitui o caractere por \ n