Dlaczego vim tworzy pliki z zakończeniami linii DOS?

15

mam

set fileformat=unix

w moim .vimrc, a mimo to, jeśli utworzę plik w vim(działający w Cygwin), nadal będzie on tworzył pliki w formacie DOS i muszę je uruchomić, dos2unixaby je wyczyścić. (Wydaje mi się, że tak naprawdę nie muszę , ponieważ Git czyści je dla mnie, ale po prostu denerwuje mnie to, że edytor tekstu w systemie Unix, który specjalnie poleciłem używać końcówek linii uniksowych, zanieczyszcza je dodatkowymi śmieciami .)

Dlaczego tak się dzieje? Jak mogę to naprawić? (I przez „naprawić” ja nie czegoś wymagającego mi przekonwertować każdy plik osobno. To nie jest poprawka. To, co jest całkowicie zerwane.)

ikonoklasta
źródło
Założę się, że to problem z cygwinem. Cygwin ma opcję wyboru stylu zakończenia linii, ale nie widziałem żadnych dowodów, że to naprawdę działa. Mój uniwersytet używa Eclipse z cygwin do kolekcji kompilatorów GNU i spotkałem się z dziwnym zachowaniem, z getlinektórym okazało się, że cygwin robi coś dziwnego. Rezultatem jest styl CR+LFuniksowy LFlub nawet dos LF+CR. Powinieneś sprawdzić i zobaczyć, jaki styl zakończenia linii skonfigurowałeś w cygwin, ale YMMV. Zobacz także cygwin.com/faq/faq-nochunks.html#faq.api.cr-lf
Matt
@Matt: DOS / Windows używa CR+LF, a nie LF+CR.
echristopherson,
Bałem się, że wymienię je, jeśli nie sprawdzę dwukrotnie, minęło ponad semestr, odkąd miałem ten problem. Zakończenia linii były inne, kiedy działałem w cygwin i kiedy działałem po znaku zachęty dos i pamiętam, że byłem przekonany, że było to odwrotne od tego, czego można oczekiwać od DOS, ale jak widać, łatwo mi się przestawić.
Matt
Czy na pewno ten plik .vimrc jest nawet czytany? Spróbuj popełnić umyślny błąd i sprawdź, czy vim go wykryje.
CVn
@ MichaelKjörling: tak, testowałem i jest on czytany. Skomentowałem moją set numberlinię, która zaczęła obowiązywać i odkomentowała ją, a to zadziałało. Dodałem też „bla bla bla” na dole i dostałem „Naciśnij ENTER lub wpisz polecenie, aby kontynuować”, gdy coś otworzyłem, ale dziwnie nie było wcześniej komunikatu o błędzie (chyba że były to czarne litery na czarnym tle).
iconoclast

Odpowiedzi:

21

Tylko ustawienie fileformatmoże nie wystarczyć, w zależności od kilku czynników. Spróbuj tego:

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

Aby zrozumieć, co one robią, spójrz na :help fileformatsitp.

Myślę, że jestem w stanie odtworzyć twoje problemy, używając vim.exedostarczonych przez gitw Windows. Korzystanie z powyższych ustawień rozwiązało problem dla mnie. W tym przykładzie set nobinaryskomentowano, ponieważ nie sądzę, abyś go potrzebował, zostawiłem go tam jako wskazówkę, która może pomóc w razie potrzeby dalszego zbadania.

janos
źródło