为什么vim用DOS行尾创建文件?


15

我有

set fileformat=unix

在我的中.vimrc,但是如果我在vim(在Cygwin中运行)中创建文件,则该文件仍会创建DOS格式的文件,并且我必须运行它们dos2unix以清理它们。(我猜我不是必须的,因为Git为我清理了它们,但是这让我很生气,因为我专门指示要使用Unix行尾的Unix文本编辑器正在用额外的垃圾污染它们)

为什么会这样?我该如何解决?(“修复” 并不是要我单独转换每个文件的意思。这不是修复。这是完全坏了。)


我敢打赌这是一个cygwin问题。cygwin中有一个选项可以选择行结束符样式,但我还没有看到它实际起作用的任何证据。我的大学在GNU编译器集合中使用Eclipse和cygwin,我遇到了一个奇怪的行为getline,事实证明是cygwin在做一些奇怪的事情。产生了一种CR+LF代替Unix LF甚至是dos的样式LF+CR。您应该检查并查看您在cygwin中配置了哪种行尾样式,但使用YMMV。另请参见cygwin.com/faq/faq-nochunks.html#faq.api.cr-lf
Matt

@Matt:DOS / Windows确实使用CR+LF,而不是LF+CR
echristopherson

我担心如果我不仔细检查,我会交换那些,因为我有这个问题已经有一个学期了。在cygwin中运行和在dos提示符下运行时,行尾不同。我记得我坚信它比DOS中的预期要晚,但是如您所见,它们很容易切换。
马特

您确定甚至已读取此.vimrc吗?尝试犯一个故意的错误,看看vim是否能解决这个问题。
CVn 2012年

@MichaelKjörling:是的,我测试过,正在阅读。我注释掉了我的set number台词,它生效了,而未注释掉它,那才生效。在打开任何内容时,我还在底部添加了“等等等等”,并且在打开任何内容时都得到了“按ENTER或键入命令以继续”的信息,但奇怪的是在此之前没有错误消息(除非它是黑色背景上的黑色字母)。
iconoclast 2012年

Answers:


21

fileformat取决于某些因素,仅设置可能还不够。尝试这个:

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

要了解这些功能,请查看:help fileformats,等等。

我想我可以使用Windows中vim.exe提供的重现您的问题git。使用以上设置为我解决了问题。在该示例set nobinary中,由于我认为您不需要它而被注释掉了,因此我将其留在此处作为提示,在您需要进一步调查时可能会有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.