0.禁用AutoCRLF。
1. indent必须使用U+0009,alignment必须使用U+0020,禁止混用表示单一用途。没为什么,这就是这些字符的原意。如果文本编辑器显示会抽风/没法配置,那说明的编辑器太残了。
2. 除了特定的脚本(依赖shebang/Windows批处理)或者准备到处cat的东西,都使用UTF-8+BOM。
UTF-8尽管空间效率不一定就高,但是兼容性良好。如果是其它编码,至少也得用基于UCS的。GBK首先的问题就是没法涵盖某些字符,换GB18030经常又不如UTF-16。UTF-8的另外一个好处是字节序统一,没有纠结LE和BE的必要。
没有BOM的东西充其量只是可能随处中断不完整的byte sequence,是不是就配叫regular file呢,值得怀疑。
3.只要使用的实现支持CR的情况就CR+LF。大多数实用的编辑器同时支持两者,有些支持检查不当的混用。注意有些协议要求CR+LF。而违反CR+LF导致的错误比违反LF通常更容易检查。
Reference:
https://bitbucket.org/FrankHB/yslib/wiki/WikiRules.en-US.md