LF or CRLF

经常同时使用 Windows 和 Linux/Unix 的人可能会遇到一些问题,比如,换行符不一致。

LF:Line Feed,中文意思是换行,符号为 \n ,Linux/Unix 用来表示文本换行的方式。
CRLF:Carriage Return Line Feed,中文意思是回车换行,符号为 \r\n ,Windows 系统用来表示文本换行的方式。

由于在不同的操作系统下,换行符的表示方式有所不同,因此代码在不同的系统上打开时可能会出现换行格式不正确等现象(现代的高级编辑器或 IDE 已经可以自动识别了,如 Visual Studio CodeIntelliJ IDEA),甚至出现运行时直接报错。

要想实现在不同平台上代码一致,可以统一按照一个平台的换行符对 IDE 工具进行设置,这里由于我所学的 Java、Python、GoLang 等,一般运行在 Linux 服务器上,因此我选择使用 Linux/Unix 的换行符(LF,即 \n)作为默认换行符。

IntelliJ IDEA 可依次进入 Setting > Editor > Code Swtyle ,将 Line separator 选项设置为 Unix and OS X (\n)

其他编辑器/集成开发环境请自行搜索。

Git 配置

Git 在不同的操作系统上也需要进行不同的配置

Linux 下

Linux 下,只需要配置用户名、邮箱

1
2
git config --global user.name username
git config --global user.email [email protected]

Windows 下

Windows 下,为了能让代码在 Linux 下可以正常显示,建议使用以下配置

1
2
3
4
git config --global user.name username
git config --global user.email [email protected]
git config --global core.autocrlf input
git config --global core.safecrlf true

备注

1
2
3
4
5
6
7
8
# 提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true

# 提交时转换为LF,检出时不转换
git config --global core.autocrlf input

# 提交检出均不转换
git config --global core.autocrlf false
1
2
3
4
5
6
7
8
# 拒绝提交包含混合换行符的文件
git config --global core.safecrlf true

# 允许提交包含混合换行符的文件
git config --global core.safecrlf false

# 提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn