No lado da substituição do vim, uma nova linha é representada por \r
. Assim, tente:
%s/\n\n/#\r\r/g
O arquivo resultante será parecido com:
elephant#
rhino#
giraffe#
/* animals who live in Africa */
Na primeira metade de um comando substituto, \n
é uma nova linha e \r
é um retorno de carro. Por outro lado, no lado de substituição do comando, \n
é um caractere NUL (hex 00) e \r
é uma nova linha.