When I save lines of data in excel files as tab delimited .txt files, and then open those files in VIM, I see that what was once a multi-line file in excel is now a single line file in VIM.
The "lines" can be separated in VIM using some substitution commands:
%s/^M/\r\n/g
After this, the "lines" are now separated by an ^@
.
I deal with it using another substitution command:
%s/^@//g
My questions are:
- Why do my multi-line txt excel files open as a single line in VI?
- What is
^@
? - Is there a better way to 'fix' my txt files?
Try this command:
\r
is the carriage return character vim uses. The^M
character is a newline character that is literally displayed.You can often fix problems like this by running the following command:
dos2unix FILE_NAME
This will re-format the file's newline characters in place (ie it will modify your file).
(This command does not exist on Mac OS X)
If you don't have dos2unix (eg you're on a Mac), you can just use sed:
sed 's/^M$//' input.txt > output.txt
You can also use
sed -i
if you want to avoid creating a new file by performing the substitution in place.You can enter
^M
by typing CTRLV followed by CTRLMMore reading here