Почему vim создает файлы с окончанием строки DOS?


15

у меня есть

set fileformat=unix

по моему .vimrc, и все же, если я создаю файл вvim (запущенный в Cygwin), он сохраняется при создании файлов в формате DOS, и мне нужно запустить их, dos2unixчтобы очистить их. (Думаю, мне это не нужно , так как Git очищает их для меня, но меня просто умирает, что текстовый редактор Unix, который я специально дал указание использовать окончания строк Unix, загрязняет их дополнительным мусором .)

Почему это случилось? Как я могу это исправить? (И под словом «исправить» я не подразумеваю то, что требует от меня преобразования каждого файла в отдельности. Это не исправление. Это то, что полностью сломано.)


Держу пари, что это проблема Cygwin. В cygwin есть возможность выбрать стиль окончания строки, но я не видел никаких доказательств того, что он действительно работает. Мой университет использует Eclipse с cygwin для коллекции компиляторов GNU, и я столкнулся со странным поведением getline, в результате которого cygwin сделал что-то странное. В результате CR+LFвместо Unix LFили даже DOS стиль LF+CR. Вы должны проверить и посмотреть, какой стиль окончания строки вы настроили в cygwin, кроме YMMV. См. Также cygwin.com/faq/faq-nochunks.html#faq.api.cr-lf
Мэтт

@ Matt: DOS / Windows делает использование CR+LF, а не LF+CR.
Эхристоферсон

Я боялся, что я обменял бы их, если бы я не перепроверил, был в течение семестра, так как у меня была эта проблема. Окончания строк были разными при работе в Cygwin и при запуске в командной строке DOS, и я помню, что был убежден, что это было в обратном направлении по сравнению с тем, что вы ожидаете от DOS, но, как вы видите, мне легко переключиться.
Мэтт

Вы уверены, что этот .vimrc даже читается? Попробуйте сделать преднамеренную ошибку и посмотрите, заметит ли vim ее.
CVN

@ MichaelKjörling: да, я проверял, и это читается. Я закомментировал свою set numberстроку, и она вступила в силу, и раскомментировала ее, и это вступило в силу. Я также добавил «бла-бла-бла» внизу и получил «Нажмите клавишу ВВОД или введите команду, чтобы продолжить», когда я что-либо открыл, но странным образом до этого не было сообщения об ошибке (если только это не были черные буквы на черном фоне).
иконоборчество

Ответы:


21

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

set fileformat=unix
set fileformats=unix,dos
"set nobinary

Чтобы понять, что они делают, посмотрите :help fileformatsи т. Д.

Я думаю, что я могу воспроизвести ваши проблемы, используя vim.exeпредоставленные gitв Windows. Использование вышеуказанных настроек решило проблему для меня. В примере set nobinaryзакомментировано, потому что я не думаю, что вам это нужно, я оставил его там в качестве подсказки, которая может помочь в случае, если вам нужно продолжить расследование.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.