10

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.

| 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
  • On my vim, by default I usually see no ^M, but sometimes there is one at the end of the file. – trysis Mar 23 '17 at 19:06
10

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.

| improve this answer | | | | |
  • 2
    @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
  • 2
    @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
  • I experienced exactly the same thing as @sss – SSH This May 2 '13 at 21:58
  • Thus corrupts the carefully prepared user configuration. I most likely want the ffs exactly the way it is. But see the answer from @wisbucky. – fork0 Sep 13 '18 at 13:20
2

To show dos line endings for the current file:

:e +ff=unix

This forces the fileformat to unix, which will render CR as ^M


To make this setting permanent, add to ~/.vimrc:

set ffs=unix

Note that the .vimrc setting is ffs, not ff.

| improve this answer | | | | |
  • This should be :e ++ff=unix, I believe. – fork0 Sep 13 '18 at 13:21
0

:e ++ff=unix

(per fork0) 54321

| improve this answer | | | | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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