Mengapa vim membuat file dengan ujung baris DOS?

15

saya sudah

set fileformat=unix

di saya .vimrc, namun jika saya membuat file di vim(berjalan di Cygwin) itu tetap membuat file format DOS, dan saya harus menjalankannya melaluidos2unix untuk membersihkannya. (Saya rasa saya tidak benar - benar harus , karena Git membersihkannya untuk saya, tapi itu hanya mengganggu saya sampai mati bahwa editor teks Unix, yang saya secara khusus diinstruksikan untuk menggunakan ujung garis Unix, mencemari mereka dengan sampah tambahan .)

Mengapa ini terjadi? Bagaimana saya bisa memperbaikinya? (Dan dengan "memperbaiki", saya tidak bermaksud sesuatu yang mengharuskan saya untuk mengkonversi setiap file secara individual. Itu bukan perbaikan. Itu yang benar-benar rusak.)

iconoclast
sumber
Saya berani bertaruh ini adalah masalah cygwin. Ada opsi di cygwin untuk memilih gaya garis akhir tetapi saya belum melihat bukti itu benar-benar berfungsi. Universitas saya menggunakan Eclipse dengan cygwin untuk koleksi kompiler GNU dan saya menjumpai perilaku aneh getlineyang ternyata cygwin melakukan sesuatu yang aneh. Menghasilkan CR+LFUnix LFatau bahkan gaya dos LF+CR. Anda harus memeriksa dan melihat gaya garis akhir apa yang telah Anda konfigurasikan di cygwin tetapi YMMV. Lihat juga cygwin.com/faq/faq-nochunks.html#faq.api.cr-lf
Matt
@ Matt: DOS / Windows tidak digunakan CR+LF, tidak LF+CR.
echristopherson
Saya takut saya akan menukar itu jika saya tidak memeriksa, sudah lebih dari satu semester sejak saya memiliki masalah itu. Akhir baris berbeda ketika berjalan di cygwin dan ketika berjalan di dos prompt dan saya ingat yakin itu mundur dari apa yang Anda harapkan dari DOS tetapi seperti yang Anda lihat mereka mudah bagi saya untuk beralih.
Matt
Apakah Anda yakin .vimrc ini bahkan terbaca? Coba buat kesalahan yang disengaja dan lihat apakah vim mengambilnya.
CVn
@ MichaelKjörling: ya, saya diuji, dan sedang dibaca. Saya mengomentari set numberkalimat saya , dan itu berlaku, dan membatalkan komentar dan itu berlaku. Saya juga menambahkan "blah blah blah" di bagian bawah, dan mendapat "Tekan ENTER atau ketik perintah untuk melanjutkan" ketika saya membuka apa pun, tetapi anehnya tidak ada pesan kesalahan sebelumnya (kecuali itu adalah huruf hitam pada latar belakang hitam).
iconoclast

Jawaban:

21

Pengaturan saja fileformatmungkin tidak cukup, tergantung pada beberapa faktor. Coba ini:

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

Untuk memahami apa yang dilakukan ini, lihatlah :help fileformats , dll.

Saya pikir saya dapat mereproduksi masalah Anda, menggunakan yang vim.exedisediakan oleh gitdi windows. Menggunakan pengaturan di atas memperbaiki masalah untuk saya. Dalam contoh set nobinaryini dikomentari karena saya pikir Anda tidak membutuhkannya, saya meninggalkannya di sana sebagai tip yang mungkin membantu jika Anda perlu menyelidiki lebih lanjut.

janos
sumber