Vim на Cygwin: предупредите, что vimrc использует Windows end of line char

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

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

есть ли какой-то метод, который я могу использовать, чтобы предупредить vim, что мой файл vimrc использует Windows end of line 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
...

4 ответов


от cygwin типа

dos2unix.exe _vimrc

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

" vim: se ff=unix :

конечно, вам придется исправить это вручную в первый раз (:se ff=dos|w!)

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

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

:he 'rulerformat'
:he 'statusline'

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

:set statusline='%{&fileformat}'

HTH

П. С. если ваш файл нуждается в дополнительной фиксации, потому что он уже смешивал концы строк, вы можете

:%s/^M$//g

обязательно добавьте $ или вы нарушите сопоставления. Введите ^M as Ctrl-QEnter на windows (Ctrl " И " VEnter в Linux; все предполагающие конфигурации по умолчанию)


У меня есть это в моей строке статуса:

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

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


из Cygwin shell вы можете ввести:

dos2unix.exe .vimrc

это конвертирует ваш файл в формат unix.