不知不觉用了 10 年了,记得在早些年都是喜欢用 tab 而不是 space 的。
![]() |
1
wheat0r 1 天前
yaml:这事我知道
|
![]() |
2
maocat 1 天前 via Android ![]() makefile:莫挨老子
|
3
Configuration 1 天前 via iPhone
国内应该是 2010 年之后,国外更早。
我自己是因为 tab 在不同平台或编辑器下面呈现的实际宽度不一致,所以换用空格 |
![]() |
4
GeekGao 1 天前
|
![]() |
5
jqtmviyu 1 天前
我是两空格党. tab 的展示效果一致性太差.
|
![]() |
6
lekai63 1 天前 via iPhone
yaml 下 我用 tab
但写 python 我就按空格。 你不说我倒是不觉得,你一说 我觉得我有点怪怪的 |
7
cj323 1 天前 ![]() 从来没用过空格,tab 能省点字节
|
![]() |
8
DOLLOR 1 天前 ![]() 可能是很多编辑器默认 tab 键=2 个或 4 个空格,然后大部分人懒得改设置,这习惯就被悄悄改变了
|
9
kneo 1 天前
个人感觉是 2000 年左右 Java 开始流行的时候。
|
10
luodan 1 天前
回想起来可能是从谢耳朵一次跨 8 格楼梯摔到楼下那时候开始的。
|
11
yulon 1 天前
回调地狱引起的
|
![]() |
12
neilp 1 天前 ![]() tab 在不同的编辑器下渲染宽度不统一. 而空格是统一的.
在某些环境下, 比如 shell, tab 是特殊字符, 而空格是普通字符. |
13
mayli 1 天前
代码编辑器开始自动格式化代码的时候吧,编辑的时候随便按,大部分编辑器都是保存时自动格式化成空格
|
![]() |
14
netabare 1 天前 via iPhone
空格可以组成 tab ,但 tab 没法拆成空格。
长此以往空格替代 tab 不是很正常的嘛。 |
15
liuran 1 天前 ![]() 早期渲染的时候 tab 不一定渲染成几个字符,但是空格就是一个字符,所以空格更可以保持一致性。
妈的!我他么的有同事混用 tab 和空格,艹!虽然现在 tab 一般都是渲染成 4 个空格长度了。 |
![]() |
16
chendy 1 天前
不知道,因为我一直按的是 tab ,但是不知道从啥时候开始就变成空格了…
个人倾向是空格,因为代码里可以没有 tab 但是不能没有空格,然后 tab 空格动不动就会接到一起,多少有点难受 |
![]() |
17
june4 1 天前
tab 万恶之源,毫无一至性,特别是和空格混和时,完全看不出来,比如多行并一行时
而且 tab 最大好处是在行首省了按多下空格,但现代编辑器的空格早就有这个功能 |
![]() |
18
harryWebb 1 天前
反正我印象中 13 年以后就一直是这样了。。。
|
![]() |
19
villivateur 1 天前
因为 tab 没法固定长度,导致代码排版很奇怪
|
20
yazinnnn0 1 天前
|
22
Seanfuck 1 天前
当然是 javascript ,在网上就没见过用 tab 缩进的 js 代码。
|
23
Seanfuck 1 天前
大概就是 nodejs 开始流行的时候
|
![]() |
25
justfindu 1 天前
从 2003 左右 高中参加 NOI 开始, 好像一直都是空格. 然后是 JS , HTML , 有时候 Tab 缩进的距离显示太短不好看.
|
26
leonshaw 1 天前 via Android
拨乱反正
|
![]() |
27
lisxour 1 天前 ![]() |
![]() |
28
go522000 1 天前
不知道啥时候开始的,印象中是我换第二份工作的时候,2010 年左右吧,印象中这个当时争论挺大的,比较出名的是国外某个大佬的一篇文章的,在 tab 、2 个空格、4 个空格中,他建议是用 2 个空格,他的意思是他在测试 N 多个不同版本的系统与编辑器后,在大多数环境下,2 个空格的长度看起来是一致的,所以建议使用 2 个空格。
但啥时候变成 4 个空格不知道(只限后端),因为我最近看了几个前端项目,2 个空格的居多。 |
29
RYS 1 天前
一直是 tab
|
![]() |
30
dragondove 1 天前
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 = ... 这样的东西,换个行来对齐就容易出问题 |
![]() |
31
zhwguest OP 我只是好奇啊。
对了,看到很多朋友说,空格能够方便转 tab ,tab 不容易转空格,我怎么觉得刚好相反呢 |
32
Huelse 1 天前
主要是因为 git 等版本管理工具对这些敏感,为了统一性而选择空格(因为有的人 tab 是 2 个空格,有的人 tab 是 4 个空格),而空格是有几个就是几个,具有一致性。
另外当时很多编程语言也都优先空格,如 php 和 python... |
![]() |
33
williamx 1 天前
|
35
duhbbx1119 1 天前
我看到过的就 linux 是用 tab
|
37
cj323 1 天前 via iPhone
@duhbbx1119 go 用 tab ,rob pike 认为渲染结果上的不一致应该计算机去解决而不是敲空格。虽然我用 tab ,但我觉得 rob pike 有点想多了,计算机没那么聪明,不知道每个人喜好,人也没那么勤快到处去放 editorconfig 。以至于 go 在编辑器的显示一致性都做不到。而 go 在 markdown ,html 里的显示更是千奇百怪。
|
![]() |
39
jasonyang9 1 天前 via Android
除非 tab 和 space 的语义不同,随意
|
![]() |
40
hzzhzzdogee 1 天前
|
![]() |
41
coolloves 1 天前
空格比 tab 的容错率高吧
|
43
misdake 1 天前 ![]() 很好奇缩进的显示一致性有啥用。每个人能根据自己的喜好决定显示效果是件好事嘛,就和设置显示字体一样。
|
44
james122333 1 天前 via Android
我爱 tab 终端机显示切换也更方便
vim 下也很好分 set list 就可以列出特殊字元 set nolist 取消 |
![]() |
45
youyouzi 1 天前
|
46
james122333 1 天前 via Android
vim 下缩排也很方便
|
47
yshtcn 1 天前 via iPhone
在看到这个讨论之前,我还以为是因为 python 的流行。
因为早期我还在学 c#的时候,那时候缩进不是必须的,你愿意的话可以把几行写在一行。 但是 python 就要求必须缩进,然后编辑器也会自动把 tab 转四个空格 |
48
Greendays 1 天前
我用的 IDE 好像都是自动把 tab 转成空格的
|
![]() |
49
Sinksky 1 天前
问就是 space 方便自动排版跟对齐缩进,看起来更美观。tab 也就字符少点有点优势,感觉显示宽度自由这些说法有点鸡肋,没啥实际用处。
|
![]() |
50
spadger 1 天前
我只用 tab 缩进。想显示几个空格编辑器设置改一下就行了。
|
![]() |
51
lslqtz 1 天前
基本上只在开头用 tab, 因为方便修改缩进和对齐, 相比 space 在修改时更准确, 而且也能兼顾到不同人的缩进习惯 (比如有些人喜欢 2 字符, 有些人喜欢 4 字符).
缺点是有些语言缩进长度会影响观感. |
52
cj323 1 天前 ![]() @misdake 理论上当然是用 tab 对阅读者更自由,每个人都可以定义自己喜欢的宽度。
但现实是没人愿意花精力到处改参数。哪怕有那个精力,一开始也是默认值。而默认值如果不是当前使用者喜欢的宽度,也会被“膈应”一下。 更不用说很多 GUI 没法设置 tab 宽度,浏览器就是一个。每次看网页文档时,我都想把 Chrome“革命”一下,让他也能设置 tab size ,让所有网上的代码都是我最喜欢的 tab 宽度。当然,这是我想多了。 所以我特别理解用空格的人,用了空格,最起码自己发上去的代码,到哪里都是自己喜欢的缩紧宽度,不管在浏览器里还是别的地方。 |
53
AnkhSpirit 1 天前
tab 缩进,然后在设置里设置 tab 有几个空格就完事儿了
|
![]() |
54
pkoukk 1 天前 ![]() 15 年的时候还有人在讨论用哪个好,今天主流 IDE 都已经用空格代替 Tab 了
|
55
mark2025 1 天前
前端 HTML 用 4 空格(或者 tab 映射 4 )可能都嫌屏幕宽度不够,尤其上了 TypeScript 恐怕就得 2 空格了
|
57
encounter2017 1 天前 ![]() > 早些年都是喜欢用 tab 而不是 space 的
这个表述缺乏论据支持呀 http://ukupat.github.io/tabs-or-spaces/ 一个比较老的统计,各个语言 tabs 和 spaces 的使用情况 对于某个语言来说,90% 以上使用的选项( 4 spaces, 2 spaces, tabs, 网站还统计了 3spaces 和 8 spaces 这里不与列出) 如下: 4 spaces: - Python (1991 ,PEP8 官方规范, 混用的怕不是没挨过 inconsistent use of tabs and spaces in indentation 的毒打) - Rust ( 2010, 社区约定 4 空格,工具链( rustfmt )默认支持。) 2 spaces: - Crystal (2014, 继承 Ruby 风格) - Pascal ( 1970 ) - Clojure (2007) - Common Lisp (1984) - Elicxir (2012) - Ocaml (1996) - Ruby (1995) - Scala (2004) tabs: - Go ( 2009, 语言强制) |
![]() |
58
dallaslu 1 天前
所以 go 自带格式化,省得吵这些没有用的
|
61
mark2025 1 天前
@misdake 说是这样说,楼上也有人说 tab 方便配置,不过现实是除了编辑器支持而多数现实环境(特别是浏览器)没法配置,在默认情况下 tab 渲染 8 空格宽度那真是一言难尽(见 L42 的图片)
|
![]() |
63
huzhizhao 11 小时 47 分钟前
tab 党路过
ide 默认设置 |
![]() |
64
Sfilata 10 小时 14 分钟前
我是大概好像入行的时候就被教要遵循 Airbnb 的编码规范,里面就包含这个。虽然当时解释了空格相对于 tab 更有一致性,多人编码的时候看起来缩进长短会一致。
|
65
vkleo 7 小时 49 分钟前
交给 ide ,它不缩进,我就忍着,我看跑不通是它着急还是我着急,tmd
|
66
hhjuteman 4 小时 10 分钟前
网页端审核代码合并代码,有的界面 tab 是 8 个空格长度的。再把 if else 和循环套几个,代码前面的空白都顶到天上去了,看着就难受,还审核什么呢。
团队编码有规范的,考虑到 tab 的显示效果不一致,缩进都是空格。后面 git 提交都上检查了,用 tab 缩进的无法合并 |