2011-03-30 15 views
11

Acabo de instalar cygwin en mi máquina y solo estoy configurando todo.Vim en Cygwin: advierte que vimrc está usando windows fin de línea char

Creé un enlace virtual entre .vimrc en mi directorio de inicio de cygwin y mi directorio de inicio de Windows, pero vim tiene algunas dificultades para leer el archivo .vimrc porque usa los caracteres de fin de línea de Windows.

¿Existe algún método que pueda utilizar para advertir a vim de que mi archivo vimrc está usando Windows end of line char?

Aquí hay alguna salida.

~ $ 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 
... 
+0

Cygwin tiene un util que le ayudará, d2u. – johnny

Respuesta

15

De tipo cygwin

dos2unix.exe _vimrc 
+0

Bueno, aunque obtuve un error en cygwin ya que no tenía cygwin1.dll en la ruta, pero esto solucionó ese problema. http: // stackoverflow.com/questions/6752578/the-program-cant-start-because-cygwin1-dll-is-missing-in-eclipse-cdt – enkor

5

Si tiene modeline habilitado, usted podría entrar en esta como la primera línea en su vimrc

" vim: se ff=unix : 

por supuesto, habría que fijar manualmente la primera vez (:se ff=dos|w!)

De esta manera no tiene que ser advertido, porque siempre estará en el modo correcto para este archivo.

Si lo desea para todos los archivos, consulte los comandos automáticos (AuCommand, por ejemplo, BufEnter). Si quería sólo para ver siempre el formato de archivo, se puede incluir en la regla o la línea de estado

:he 'rulerformat' 
:he 'statusline' 

por ejemplo, línea de estado simplista

:set statusline='%{&fileformat}' 

HTH

P. S. Si el archivo necesita más fixin porque ya estaba mezclando alineaciones extremos, puede

:%s/^M$//g 

asegúrese de agregar el $ o rompería asignaciones. Introduzca^M como Ctrl-QIntroduzca en las ventanas (Ctrl-VIntroduzca en Linux; todos los que asumen configuraciones por defecto)

+0

Se agregó más información sobre cómo arreglar un archivo con extremos de línea mixtos. Esta es una operación de una sola vez si habilita la línea de modelos – sehe

1

tengo esto en mi línea de estado:

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

Lo que hace es que si alguna vez cargo un archivo que tiene dos terminaciones de línea, obtengo este bonito "dos" rojo en mi línea de estado.

1

De cáscara de cygwin, puede escribir:

dos2unix.exe .vimrc 

Esto convertirá el archivo en formato UNIX.