说明
- 工作中,在windows上使用IDE(vscode)编辑代码,有时也会在Linux服务器上使用vim编辑代码,混用之后,即使是使用统一的缩进方式编辑代码,也时常发现代码缩进没有对齐,如下:
-> printf("hello\n");
........printf("hello\n");
- tab键缩进,显示效果如下:
-> printf("hello\n");
- 空格键缩进,显示效果如下:
....printf("hello\n");
- 由于tab缩进只需要按tab键一次,空格缩进需要按空格键多次,大部分人还是习惯使用tab缩进。
问题根因
- 不同编辑器tab符号显示的缩进长度不一样,vim tab符号的缩进长度等于8个空格,而其它大部分编辑器是4个空格。
- vim 显示效果:
-> printf("hello\n"); // tab符号
........printf("hello\n"); // 8个空格符号
-> printf("hello\n"); // tab符号
....printf("hello\n"); // 4个空格符号
使用编辑器时
- 使用单个编辑器,不管是window上的vscode,还是linux上的vim,由于一个人使用缩进方式是固定的,显示效果也是对齐的。
- 如果使用单个编辑器,依然缩进不齐,只能是以下原因:
- 缩进时,tab和空格使用不统一,有的地方使用tab,有的地方使用空格,常见于多人编写的代码或者拷贝的代码。
- 注意:不只是混用编辑器会出现缩进问题,不同的代码显示命令tab缩进的长度也不同,例如:git show 是以8个空格长度显示tab,因此使用单个编辑器时,缩进方式也需要统一。
混用编辑器时
- 混用编辑器,如果都使用tab缩进,理论上:不管编辑器的tab符号等于8个空格,还是4个空格,显示效果也是对齐的。
- 然而,使用tab缩进,默认配置下很多编辑器在代码编辑(手动换行或者拷贝代码)时会更改你的缩进方式,会将tab符号更改为对应数量的空格,这样代码中就会既有空格,又有tab。
- 如果使用单个编辑器,更改也没问题,例如:tab更改为4个空格,tab本身也是按4个空格缩进,所以显示效果也是对齐的。
- 如果使用多个编辑器,例如:vim将tab改成8个空格后,vscode显示tab是4个空格的缩进长度,8个空格对不齐了。
解决问题的办法
- 配置编辑器,统一将tab转换成4个空格。
- 配置编辑器,使编辑器不去自动修改用户的缩进方式,文件存储时,1个tab只占用1 byte存储空间,如果改成4个空格,需要占用4个存储空间。