Por que o vim está criando arquivos com terminações de linha do DOS?

15

eu tenho

set fileformat=unix

no meu .vimrc, e ainda assim, se eu criar um arquivo vim( em execução no Cygwin), ele persiste na criação de arquivos no formato DOS, e eu tenho que executá-los dos2unixpara limpá-los. (Eu acho que realmente não preciso , pois o Git os limpa para mim, mas me incomoda muito que um editor de texto Unix, que eu instruí especificamente para usar as terminações de linha do Unix, os polua com lixo extra .)

Por que isso aconteceria? Como posso corrigir isso? (E por "correção" não quero dizer algo que exija a conversão de cada arquivo individualmente. Isso não é uma correção. É o que está totalmente quebrado.)

iconoclasta
fonte
Eu apostaria que este é um problema cygwin. Existe uma opção no cygwin para escolher o estilo de final de linha, mas eu não vi nenhuma evidência de que ele realmente funcione. Minha universidade usa o Eclipse com cygwin para a coleção do compilador GNU e eu encontrei um comportamento estranho com o getlinequal acabou sendo cygwin fazendo algo estranho. Resultou em um estilo em CR+LFvez do Unix LFou até em um dos LF+CR. Você deve verificar e ver qual estilo de final de linha configurou no cygwin, mas no YMMV. Consulte também cygwin.com/faq/faq-nochunks.html#faq.api.cr-lf
Matt
@ Matt: DOS / Windows faz uso CR+LF, não LF+CR.
echristopherson
Eu tinha medo de trocá-las se não checasse duas vezes, faz mais de um semestre desde que tive esse problema. As terminações de linha eram diferentes ao rodar no cygwin e ao rodar no prompt dos e lembro-me de estar convencido de que era um retrocesso do que você esperaria do DOS, mas como você pode ver, é fácil mudar.
Matt
Você tem certeza de que esse arquivo .vimrc é lido? Tente cometer um erro deliberado e veja se o vim capta isso.
um CVn
@ MichaelKjörling: sim, eu testei e está sendo lido. Comentei meuset number linha, e ela entrou em vigor, e descomentei, e isso entrou em vigor. Também adicionei "blá blá blá" na parte inferior e obtive "Pressione ENTER ou digite o comando para continuar" quando abri qualquer coisa, mas estranhamente não havia nenhuma mensagem de erro antes disso (a menos que fossem letras pretas sobre fundo preto).
Iconoclasta

Respostas:

21

A configuração apenas fileformatpode não ser suficiente, dependendo de alguns fatores. Tente o seguinte:

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

Para entender o que eles fazem, dê uma olhada :help fileformats, etc.

Acho que sou capaz de reproduzir seus problemas usando o vim.exe fornecido pelo gitWindows. O uso das configurações acima corrigiu o problema para mim. No exemplo, set nobinaryé comentado porque acho que você não precisa, deixei-o como uma dica que pode ajudar caso você precise investigar mais.

janos
fonte