Чому vim створює файли з закінченнями рядка DOS?


15

Я маю

set fileformat=unix

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

Чому це сталося? Як я можу це виправити? (І під «виправленням» я не маю на увазі те, що вимагає від мене конвертації кожного файлу окремо. Це не виправлення. Це те, що повністю порушено.)


Я б зробив ставку, що це проблема цигуна. У cygwin є можливість вибрати стиль закінчення рядка, але я не бачив жодних доказів, що це насправді працює. Мій університет використовує Eclipse з cygwin для колекції компілятора GNU, і я зіткнувся з дивною поведінкою, з getlineякою cygwin робив щось дивне. Отриманий CR+LFзамість LFстилю Unix або навіть дос LF+CR. Ви повинні перевірити, який стиль закінчення рядка ви налаштували в cygwin, але YMMV. Дивіться також cygwin.com/faq/faq-nochunks.html#faq.api.cr-lf
Метт

@Matt: DOS / Windows використовує CR+LF, ні LF+CR.
echristopherson

Я побоювався, що я обміняю їх, якщо я не повторив перевірку, пройшов понад семестр з моменту виникнення цього питання. Закінчення рядків були різними при запуску в cygwin і при запуску в дос-підказці, і я пам'ятаю, що переконався, що це було від того, що ви очікували від DOS, але, як ви бачите, мені легко перейти.
Метт

Ви впевнені, що цей .vimrc навіть прочитаний? Спробуйте зробити навмисну ​​помилку і подивіться, чи з’являється на ній vim.
CVn

@ MichaelKjörling: Так, я перевірив, і це читається. Я прокоментував свою set numberлінію, і вона набрала чинності, і прокоментувала це, і це набуло чинності. Я також додав "бла-бла-бла" внизу, і отримав "Натисніть ENTER або введіть команду для продовження", коли я щось відкрив, але як не дивно, повідомлення про помилку до цього не було (якщо тільки це не були чорні літери на чорному тлі).
іконоборство

Відповіді:


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.