老张今年68岁,退休后自学编程,最近在社区开源项目里贡献了几行代码。可一提交,项目构建就报错,搞得合作者一头雾水。折腾半天才发现,问题出在别人看不见的地方——换行符。
看似小事,却能让程序“罢工”
老张用的是Windows电脑,写完代码直接上传到GitHub。他不知道,Windows默认用回车加换行(\r\n)当换行符,而Linux和macOS只用换行(\n)。项目部署在Linux服务器上,一读代码就识别错行,直接崩溃。
就像寄信,老张按老家的习惯把地址写成一行,收件人却习惯分行阅读,结果门牌号和街道混在一起,快递怎么也送不到。
怎么避免这种“隐形地雷”?
其实解决办法不难。只要在代码编辑器里统一设置换行符格式就行。比如用VS Code,右下角状态栏会显示当前换行类型,CRLF代表Windows风格,LF是Unix风格。点一下就能切换。
更省心的是,在项目根目录加个 .gitattributes 文件,让Git自动处理:
* text=auto eol=lf
这样不管谁在什么系统上提交代码,Git都会自动转成LF换行符,大家各用各的系统,也不打架。
家里的小孙子教他的土办法
老张的小孙子是计算机专业的大学生,看了爷爷的代码后说:“您以后写完,先点一下编辑器里的‘Save with LF’再提交。”还帮他在Sublime Text里设了默认保存格式。
从那以后,老张的代码再没因为换行符被拒。他还把这经验发到老年编程爱好者群里,不少人说:“原来不是我们老眼昏花,真是字符在捣鬼!”