Vim on Cygwin: Предупредить, что vimrc использует окна конца строки char

Я только что установил cygwin на свою машину, и я просто получаю все настройки.

Я создал softlink между .vimrc в моем домашнем каталоге cygwin и моем домашнем dir windows, но vim испытывает некоторые трудности с чтением файла .vimrc, так как он использует символы конца строки строки.

Есть ли какой-то метод, который я могу использовать для предупреждения vim, что мой файл vimrc использует окна конца строки char?

Вот несколько результатов.

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

Ответ 1

Из типа cygwin

dos2unix.exe _vimrc

Ответ 2

Если у вас включен modeline, вы можете ввести это как первую строку в своем vimrc

" vim: se ff=unix :

конечно, вам нужно будет вручную его исправить вручную (:se ff=dos|w!)

Таким образом, вы не должны быть предупреждены, потому что вы всегда будете в правильном режиме для этого файла.

Если вы хотите его для всех файлов, посмотрите на автоматические команды (AuCommand, например BufEnter). Если вы хотите, чтобы всегда видеть файл, вы можете включить его в линейку или статусную линию

:he 'rulerformat'
:he 'statusline'

например. упрощенная строка состояния

:set statusline='%{&fileformat}'

НТН

P.S. Если вашему файлу требуется больше исправлений, потому что он уже смешивает концы строк, вы можете

:%s/^M$//g

обязательно добавьте $или разделите сопоставления. Введите ^ M как Ctrl-Q Enter в windows (Ctrl-V Enter в Linux, все принимают значения по умолчанию)

Ответ 3

У меня это в моей строке состояния:

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

Что это значит, что если я когда-либо загружу файл с окончанием доводки, я получаю этот красивый красный "dos" в моей строке состояния.

Ответ 4

Из оболочки cygwin вы можете ввести:

dos2unix.exe .vimrc

Это преобразует ваш файл в формат unix.