每次我git commit任何东西,我得到一个警告,我的文件有windows行尾,他们将被更改为非windows行尾.我不知道为什么这甚至发生在第一位,似乎我写的每个文件现在都有windows行尾.无论使用何种编辑器,都会发生这种情况,Vim和VS代码中都有这种情况。我如何将其改回使用Unix行尾?
git commit
y53ybaqx1#
VIM和VS代码都能识别文件是否使用了macOS/Unix行尾(LF,例如仅0a)或Windows文件行尾(CRLF,例如0d后接0a),并保留它们。您可以使用终端hexdump -C命令,查看您的行是否由0d0a或仅由0a分隔。最有可能的情况是,在首次创建文件时,它们是使用Windows换行符序列保存的,而VIM和VS代码只是保留了该设置。
0a
0d
hexdump -C
CRLF
[dos]
在VIM中,如果是[dos]文件,可以使用:set fileformat=unix将其转换为Unix行尾字符,然后保存转换后的文件。请参阅Vim convert file from DOS to UNIX。
:set fileformat=unix
eol
但是,如果你打开一个文件并查看状态栏,你会在右边看到一个LF或CRLF。你可以点击它来来回切换。
LF
根据您拥有的文件数量,您可能需要找到一个工具来将Windows/DOS行尾CRLF序列转换为Unix/macOS LF字符。快速的StackOverflow或网络搜索无疑会给予您很多建议。或者,听起来你的repo已经更新为Unix风格的LF字符,所以你可能只想拉和使用它。
1条答案
按热度按时间y53ybaqx1#
VIM和VS代码都能识别文件是否使用了macOS/Unix行尾(LF,例如仅
0a
)或Windows文件行尾(CRLF,例如0d
后接0a
),并保留它们。您可以使用终端hexdump -C
命令,查看您的行是否由0d
0a
或仅由0a
分隔。最有可能的情况是,在首次创建文件时,它们是使用Windows换行符序列保存的,而VIM和VS代码只是保留了该设置。
CRLF
,你会在底部的状态消息中看到一个小的[dos]
。如果它已经是Unix,你就不会在那里看到[dos]
。在VIM中,如果是
[dos]
文件,可以使用:set fileformat=unix
将其转换为Unix行尾字符,然后保存转换后的文件。请参阅Vim convert file from DOS to UNIX。eol
设置,但这只影响新文件。同样,现有文件将保留文件最初使用的行尾设置。但是,如果你打开一个文件并查看状态栏,你会在右边看到一个
LF
或CRLF
。你可以点击它来来回切换。根据您拥有的文件数量,您可能需要找到一个工具来将Windows/DOS行尾CRLF序列转换为Unix/macOS LF字符。快速的StackOverflow或网络搜索无疑会给予您很多建议。
或者,听起来你的repo已经更新为Unix风格的LF字符,所以你可能只想拉和使用它。