vim 在Mac上,行尾自动设置为Windows行尾,如何更改?

atmip9wb  于 2022-11-11  发布在  Mac
关注(0)|答案(1)|浏览(214)

每次我git commit任何东西,我得到一个警告,我的文件有windows行尾,他们将被更改为非windows行尾.我不知道为什么这甚至发生在第一位,似乎我写的每个文件现在都有windows行尾.
无论使用何种编辑器,都会发生这种情况,Vim和VS代码中都有这种情况。
我如何将其改回使用Unix行尾?

y53ybaqx

y53ybaqx1#

VIM和VS代码都能识别文件是否使用了macOS/Unix行尾(LF,例如仅0a)或Windows文件行尾(CRLF,例如0d后接0a),并保留它们。您可以使用终端hexdump -C命令,查看您的行是否由0d0a或仅由0a分隔。
最有可能的情况是,在首次创建文件时,它们是使用Windows换行符序列保存的,而VIM和VS代码只是保留了该设置。

  • 在VIM中,当你打开/保存文件时,如果文件当前使用的是Windows CRLF,你会在底部的状态消息中看到一个小的[dos]。如果它已经是Unix,你就不会在那里看到[dos]

在VIM中,如果是[dos]文件,可以使用:set fileformat=unix将其转换为Unix行尾字符,然后保存转换后的文件。请参阅Vim convert file from DOS to UNIX

  • 在VS代码中,可以设置eol设置,但这只影响新文件。同样,现有文件将保留文件最初使用的行尾设置。

但是,如果你打开一个文件并查看状态栏,你会在右边看到一个LFCRLF。你可以点击它来来回切换。

  • 关于git端如何处理这个问题的信息,请参阅Configuring Git to handle line endings.我想你可能想坚持现有的行为(更新到Unix行尾字符),但是你会在GitHub文档中清楚地看到你的选项。但是如果你真的想把CRLF保留在你的文件中,你可以相应地配置你的repo。

根据您拥有的文件数量,您可能需要找到一个工具来将Windows/DOS行尾CRLF序列转换为Unix/macOS LF字符。快速的StackOverflow或网络搜索无疑会给予您很多建议。
或者,听起来你的repo已经更新为Unix风格的LF字符,所以你可能只想拉和使用它。

相关问题