不知不觉用了 10 年了,记得在早些年都是喜欢用 tab 而不是 space 的。

yaml:这事我知道

makefile:莫挨老子

国内应该是 2010 年之后,国外更早。
我自己是因为 tab 在不同平台或编辑器下面呈现的实际宽度不一致,所以换用空格

同类问题: www.reddit.com/r/learnprogramming/comments/phv9a0/why_do_people_like_spaces_instead_of_tabs_at_the/

我是两空格党. tab 的展示效果一致性太差.

yaml 下 我用 tab

但写 python 我就按空格。

你不说我倒是不觉得,你一说 我觉得我有点怪怪的

从来没用过空格,tab 能省点字节

可能是很多编辑器默认 tab 键=2 个或 4 个空格,然后大部分人懒得改设置,这习惯就被悄悄改变了

个人感觉是 2000 年左右 Java 开始流行的时候。

回想起来可能是从谢耳朵一次跨 8 格楼梯摔到楼下那时候开始的。

回调地狱引起的

tab 在不同的编辑器下渲染宽度不统一. 而空格是统一的.
在某些环境下, 比如 shell, tab 是特殊字符, 而空格是普通字符.

代码编辑器开始自动格式化代码的时候吧,编辑的时候随便按,大部分编辑器都是保存时自动格式化成空格

空格可以组成 tab ,但 tab 没法拆成空格。

长此以往空格替代 tab 不是很正常的嘛。

早期渲染的时候 tab 不一定渲染成几个字符,但是空格就是一个字符,所以空格更可以保持一致性。

妈的!我他么的有同事混用 tab 和空格,艹!虽然现在 tab 一般都是渲染成 4 个空格长度了。

不知道,因为我一直按的是 tab ,但是不知道从啥时候开始就变成空格了…
个人倾向是空格,因为代码里可以没有 tab 但是不能没有空格,然后 tab 空格动不动就会接到一起,多少有点难受

tab 万恶之源,毫无一至性,特别是和空格混和时,完全看不出来,比如多行并一行时
而且 tab 最大好处是在行首省了按多下空格,但现代编辑器的空格早就有这个功能

反正我印象中 13 年以后就一直是这样了。。。

因为 tab 没法固定长度,导致代码排版很奇怪

editorconfig.org/

2025 年了, 用 editorconfig 吧, jb vscode 都有插件支持, 你按 tab 也会按照配置文件里的来

java 缩进是 tab 不是空格

当然是 javascript ,在网上就没见过用 tab 缩进的 js 代码。

大概就是 nodejs 开始流行的时候

#10 这个情节不是生活大爆炸的,是《硅谷》里面的

从 2003 左右 高中参加 NOI 开始, 好像一直都是空格. 然后是 JS , HTML , 有时候 Tab 缩进的距离显示太短不好看.

拨乱反正

用的太累了(并不是指 editorconfig ),说个离题的话,一个项目,特别前端,根目录十几个.xxxxx 文件,你一个.xxx ,我一个.yyy ,他一个.zzz ,我 tm 真的

不知道啥时候开始的,印象中是我换第二份工作的时候,2010 年左右吧,印象中这个当时争论挺大的,比较出名的是国外某个大佬的一篇文章的,在 tab 、2 个空格、4 个空格中,他建议是用 2 个空格,他的意思是他在测试 N 多个不同版本的系统与编辑器后,在大多数环境下,2 个空格的长度看起来是一致的,所以建议使用 2 个空格。
但啥时候变成 4 个空格不知道(只限后端),因为我最近看了几个前端项目,2 个空格的居多。

一直是 tab

tab 在不同地方一致性的问题在现在不是问题,主流编辑器/IDE 都支持调整 tab 的显示大小,github 也支持个人设置里设置 tab 的显示大小,或者在地址栏里使用 ?ts=8 参数可以调节代码中 tab 的显示大小。
tab 的好处就是不同人不同显示设备可以按照个人喜好随意调节而不破坏原本的代码,不过实际使用时可能要用空格补齐对齐,而且不同 ts 大小会导致对齐被破坏。例如下面的 python 代码
l: list[list[int]] = [[1, 2],
[3, 4]]
这里 [3 前需要空格补充对齐,而且换个 ts 可能就会导致左中括号和上一行无法对齐。(例如这个变量名 l 是很长的一串)
this_is_a_long_variable_name = ... 这样的东西,换个行来对齐就容易出问题

我只是好奇啊。

对了,看到很多朋友说,空格能够方便转 tab ,tab 不容易转空格,我怎么觉得刚好相反呢

主要是因为 git 等版本管理工具对这些敏感,为了统一性而选择空格(因为有的人 tab 是 2 个空格,有的人 tab 是 4 个空格),而空格是有几个就是几个,具有一致性。

另外当时很多编程语言也都优先空格,如 php 和 python...

“tab 的好处就是不同人不同显示设备可以按照个人喜好随意调节而不破坏原本的代码”

这是种幻觉,比“一次编译到处运行”还要虚假。