From question How to replace a character for a newline in Vim?. You have to use \\r when replacing text for a newline, like this
:%s/%/\\r/g
Technical detail:
characters in the file are stored asin memory. In the display they are shown as "^@". The translation is done when reading and writing files. To match awith a search pattern you can just enter CTRL-@ or "CTRL-V 000". This is probably just what you expect. Internally the character is replaced with ain the search pattern. What is unusual is that typing CTRL-V CTRL-J also inserts a, thus also searches for ain the file. {Vi cannot handlecharacters in the file at all}