文章目录
- 1. 概念介绍
- 2. 符号和平台
- 2.1 符号
- 2.2 平台
- 3. 问题与解决
- 3.1 常见问题
- 3.2 解决方法
- 4.内容总结
我们在上一章回中介绍了"关于intl报错的问题"相关的内容,本章回中将介绍不同平台上换行的问题.闲话休提,让我们一起Talk Flutter吧。
1. 概念介绍
我们在本章回中介绍的换行是指换行的符号,比如CR表示换行,但是在不同平台上使用不同的符号。本章回中将介绍与换行符相关的内容。
2. 符号和平台
2.1 符号
我们通常用使用CR表示回车符,LF表示换行符。它们都是文本文件用于标记换行的控制字符(control characters)或字节码(bytecode)。下面是它们的全称
- CR(Carriage Return),回车符号,对应字符’\r’,十六进制的ascii码为0x0D,十进制的ascii码为13,用于将鼠标移动到行首,并不进行换行操作。
- LF(Line Feed),换行符号,对应字符’\n’,十六进制的ascii码为0x0A,十进制的ascii码为10,用于换行。
- CRLF(Carriage-Return Line-Feed),这个是全称,或者叫组合符号,它由CR和LF组合而成;CR和LF这两个符号组合后(组成 CRLF,\r\n,或十六进制 0x0D0A),它表示将鼠标移动到下一行行首。
2.2 平台
这里的平台是电脑上的操作系统,我们常用的操作系统有Windows系列,Linux系列(包含Unix和Mac.不同的平台使用不同的符号来换行,下面是常用平台上的换行符号:
- Windows系列操作系统默认的文本换行符为CRLF;
- Unix/Linux系列操作系统默认的文本换行符为LF;
- MacOS系统默认的文本换行符为LF,不过早期的macOS系统使用CR表示换行。
3. 问题与解决
3.1 常见问题
换行符在不同平台上有不同的符号,这就导致了我们写的文件在不同平台上会有差异。作为开发人员,常见的是问题就是Git,它会把差异当作代码的修改内容。比如项目
组内两个同事使用不同的平台修改一个文件,任何一个人push代码时会包含换行的差异.虽然只是一个换行上的差异,不影响程序运行,但是我们有必备解决这些差异。
3.2 解决方法
Git提供了一些配置项来帮助解决这些问题,配置成功后Git可以在push代码时自动把回车和换行转换成我们配置中的换行,而在pull代码时把换行转换成回车和换行。具
体的配置为使用命令打开core.autocrlf功能。如果是在Windows平台上,把它设置成true,这样在pull代码时,换行会被转换成回车和换行,这是Windows系统的默
认配置。如果是在Linux或MacOS,不需要配置Git在pull文件时进行自动的转换;因为Git默认为会转换,毕竟Git最初诞生于Linux平台上。然而当一个以回车加换
行作为行结束符的代码不小心被引入到文件中时,我们可以让Git自动修正为换行。此时可以把core.autocrlf设置成input,此时Git会在push代码时把回车和换行
转换成换行,pull代码时不转换,这样在Windows平台上的pull文件中会保留回车和换行,而在macOS和Linux平台上,以及版本库中会保留换行。下面是配置命令:
git config --global core.autocrlf true # 全局设置
git config --local core.autocrlf true # 当前仓库设置
git config --global core.autocrlf input # 全局设置
git config --local core.autocrlf input # 当前项目设置
使用全局命令进行配置时会影响当前用户,它会修改当前用户目录下的.gitconfig文件,使用局部命令进行配置时只影响当前git仓库,它会修改仓库下.git/config
这个文件。
4.内容总结
我们在本章回中介绍了换行符号的概念,并且介绍了换行符号在不同平台上的表示形式。我们列举了开发中常见的问题,并且提供了解决方案。我们的建议如下:
使用Windows系列系统时配置:git config --global core.aurocrlf true
使用Linux/MacOS系统时配置:git config --global core.autocrlf input
如果仅在Windows上进行开发时配置:git config --global core.autocrlf false
如果仅在Linux/MacOS上进行开发时,不需要做任何关于换行符号转换的配置.
看官们,与"不同平台上换行的问题"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!