On Solaris, if you open a file in vi that has Windows line endings, this shows up as ^M at the end of every line.

On Linux, vi is cleverer and understands the Windows file format, and does not display ^M.

Is there a setting to make Linux vi behave the same as Solaris in this respect?

A common problem for us is copying a shell script off a (Windows) dev box and forgetting to dos2unix it, and then being confused when it doesn't work properly. On Solaris the problem is obvious as soon as you vi the file, but not on Linux.

Thanks.

link|improve this question
On Linux, vi is usually Bram Moolenaar's vim, I expect the vi on Solaris is the Bill Joy vi, original, authentic but less capable. – RedGrittyBrick Nov 16 '11 at 10:04
feedback

2 Answers

up vote 1 down vote accepted

Try :set ffs=unix when starting vi (or set as default in vimrc) which should display all CR characters as ^M.

vi auto-guesses which format to use based on whether or not it encounters lines ending in just LF or both CR/LF.

link|improve this answer
1  
@RedGrittyBrick - On my system, :set list shows $ at the end of all lines (Unix & DOS format), so doesn't help distinguish between the two. – sss Nov 16 '11 at 9:36
@sss: My mistake, I'll delete the comment. – RedGrittyBrick Nov 16 '11 at 10:00
@gman - this command didn't work for me precisely - I got Not an editor command: ffs=unix - but set me on the right path. Running :set ffs=unix with the file open in vi didn't work - no error but nothing happened. I put set ffs=unix in my .vimrc file and that worked. – sss Nov 16 '11 at 10:09
feedback

You could replace ^M as follows.

 :%s/[ctrl]v[ctrl]m//
link|improve this answer
Doesn't answer the question. – Garrett Mar 29 at 17:19
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.