Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Vim on Cygwin: Warn that vimrc is using windows end of line char

Tags:

vim

cygwin

I just installed cygwin on my machine and I am just getting everything setup.

I created a softlink between .vimrc in my cygwin home dir and my windows home dir but vim is having some difficulties reading the .vimrc file since it is using windows end of line characters.

Is there some method that I can use to warn vim that my vimrc file is using windows end of line char?

Here is some output.

~ $ ls -la
total 43
drwxr-xr-x+ 1 Jake None    0 Mar 30 10:11 .
drwxrwxrwt+ 1 Jake root    0 Mar 30 09:33 ..
-rw-------  1 Jake None  504 Mar 30 10:10 .bash_history
-rwxr-xr-x  1 Jake None 1103 Mar 29 14:24 .bash_profile
-rwxr-xr-x  1 Jake None 5737 Mar 30 10:06 .bashrc
-rwxr-xr-x  1 Jake None 1461 Mar 29 14:24 .inputrc
-rw-------  1 Jake None   57 Mar 30 10:05 .lesshst
-rwxr-xr-x  1 Jake None 8945 Mar 30 09:52 .mkshrc
-rwxr-xr-x  1 Jake None  792 Mar 29 14:24 .profile
-rw-------  1 Jake None 1087 Mar 30 10:11 .viminfo
lrwxrwxrwx  1 Jake None   29 Mar 30 10:05 .vimrc -> /cygdrive/c/Users/Jake/_vimrc
~ $
~ $ vim
Error detected while processing /home/Jake/.vimrc:
line    2:
E492: Not an editor command: ^M
line    3:
E492: Not an editor command: ^M
line    4:
E492: Not an editor command: ^M
line    5:
E492: Not an editor command: ^M
line   11:
E492: Not an editor command: ^M
line   14:
E492: Not an editor command: ^M
line   16:
E492: Not an editor command: ^M
line   20:
E492: Not an editor command: ^M
line   21:
E492: Not an editor command: ^M
line   22:
E492: Not an editor command: ^M
line   27:
E474: Invalid argument: backspace=indent,eol,start^M
...
like image 351
sixtyfootersdude Avatar asked Mar 30 '11 14:03

sixtyfootersdude


3 Answers

From cygwin type

dos2unix.exe _vimrc
like image 151
cabhishek Avatar answered Nov 18 '22 01:11

cabhishek


If you have modeline enabled, you could enter this as the first line in your vimrc

" vim: se ff=unix :

of course, you'd have to fix it manually the first time around (:se ff=dos|w!)

This way you don't have to be warned, because you'll always be in the right mode for this file.

If you wanted it for all files, look at auto commands (AuCommand, e.g. BufEnter). If you wanted just to always see the fileformat, you can include it in the ruler or statusline

:he 'rulerformat'
:he 'statusline'

e.g. simplistic status line

:set statusline='%{&fileformat}'

HTH

P.S. If your file needs more fixin' because it was already mixing line-ends, you can

:%s/^M$//g

be sure to add the $ or you'd break mappings. Enter ^M as Ctrl-QEnter on windows (Ctrl-VEnter on Linux; all assuming default configs)

like image 5
sehe Avatar answered Nov 18 '22 03:11

sehe


I have this in my status line:

hi User9 term=reverse cterm=bold ctermbg=12 gui=bold guibg=Red
set statusline=...
set statusline+=\ %9*%{&ff=='unix'?'':&ff.'\ format'}%*

What that does is that if I ever load up a file that has dos line endings, I get this nice red "dos" in my status line.

like image 1
rossipedia Avatar answered Nov 18 '22 02:11

rossipedia