Vim на Cygwin: предупредите, что vimrc использует конец строки строки char - PullRequest
11 голосов
/ 30 марта 2011

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

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

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

Вот некоторые выходные данные.

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

15 голосов
/ 15 декабря 2011

Из типа cygwin

dos2unix.exe _vimrc
5 голосов
/ 30 марта 2011

Если у вас включена моделин, вы можете ввести это как первую строку в вашем 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 Введите в Windows ( Ctrl-V Введите в Linux; все предполагается, что конфигурации по умолчанию)

1 голос
/ 30 марта 2011

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

dos2unix.exe .vimrc

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

1 голос
/ 30 марта 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...