Pourquoi Vim crée-t-il des fichiers avec des fins de ligne DOS?

15

j'ai

set fileformat=unix

dans mon .vimrc, et pourtant si je crée un fichier dans vim(en cours d'exécution dans Cygwin), il persiste dans la création de fichiers au format DOS, et je dois les parcourir dos2unixpour les nettoyer. (Je suppose que je n'ai pas vraiment à le faire , car Git les nettoie pour moi, mais cela me dérange à mort qu'un éditeur de texte Unix, que j'ai spécifiquement chargé d'utiliser les fins de ligne Unix, les pollue avec des ordures supplémentaires .)

Pourquoi cela arriverait-il? Comment puis-je le réparer? (Et par «correction», je ne veux pas dire quelque chose qui m'oblige à convertir chaque fichier individuellement. Ce n'est pas une correction. C'est ce qui est totalement cassé.)

iconoclaste
la source
Je parierais que c'est un problème de cygwin. Il y a une option dans cygwin pour choisir le style de fin de ligne mais je n'ai vu aucune preuve que cela fonctionne réellement. Mon université utilise Eclipse avec cygwin pour la collection de compilateurs GNU et j'ai rencontré un comportement étrange getlinequi s'est avéré être cygwin faisant quelque chose de bizarre. Il en résulte un CR+LFau lieu de l'Unix LFou même un style dos LF+CR. Vous devriez vérifier et voir quel style de fin de ligne vous avez configuré dans cygwin mais YMMV. Voir aussi cygwin.com/faq/faq-nochunks.html#faq.api.cr-lf
Matt
@Matt: DOS / Windows n'utilise CR+LFpas LF+CR.
echristopherson
J'avais peur de les échanger si je ne vérifiais pas, depuis plus d'un semestre depuis que j'avais ce problème. Les fins de ligne étaient différentes lors de l'exécution dans cygwin et lors de l'exécution à l'invite dos et je me souviens avoir été convaincu que c'était à l'envers de ce que vous attendez de DOS, mais comme vous pouvez le voir, il est facile pour moi de basculer.
Matt
Êtes-vous sûr que ce .vimrc est même lu? Essayez de faire une erreur délibérée et voyez si vim s'en rend compte.
un CVn
@ MichaelKjörling: oui, j'ai testé, et il est en cours de lecture. J'ai commenté ma set numberligne, et elle a pris effet, et elle n'a pas été commentée et cela a pris effet. J'ai également ajouté "bla bla bla" en bas, et obtenu "Appuyez sur ENTRÉE ou tapez la commande pour continuer" lorsque j'ai ouvert quoi que ce soit, mais bizarrement il n'y avait pas de message d'erreur avant cela (sauf s'il s'agissait de lettres noires sur fond noir).
iconoclaste du

Réponses:

21

Le réglage uniquement fileformatpeut ne pas être suffisant, en fonction de quelques facteurs. Essaye ça:

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

Pour comprendre ce que cela fait, regardez :help fileformats, etc.

Je pense que je suis en mesure de reproduire vos problèmes, en utilisant le vim.exefourni par gitdans Windows. L'utilisation des paramètres ci-dessus a résolu le problème pour moi. Dans l'exemple set nobinaryest commenté parce que je ne pense pas que vous en ayez besoin, je l'ai laissé là comme un conseil qui pourrait vous aider au cas où vous auriez besoin d'enquêter davantage.

janos
la source