缩进, Tab 还是空格?(转)

圣战

圣战个毛线

Android 好还是 iOS 好,Windows 好还是 Mac 好,编辑器好还是 IDE好,中划线好还是下划线好…
写代码这么多年,会遇到很多奇葩的毫无意义的所谓脑残粉的争论

昨天 @willerce 同学刚入职就提了个问题: 缩进用 Tab 还是空格的规范貌似没有啊?
大家突然意识到有这个问题…至少证明这不是啥大问题,或者算还没暴露出来的小问题
甚至…因为统一用 IntelliJ IDEA 自动被解决了还蒙在鼓里

随着深入的学习,发现了还是有讲究的…

为什么要用 Tab?

  • 按键次数 所有我看过的学习教程中,形容代码缩进都是说,按一个 Tab 缩进而不是按 4 下空格.
  • 语义 Tab 代表”缩进一个level”,而空格有很多含义
  • 文件更小 一个 Tab 和一个空格占空间是一样的,4个空格的话就是4倍
  • 宽度可调整 常见的就是一个 Tab 等宽于 4 个空格,靠谱编辑器都可以自定义

为什么要用空格?

  • 在所有编辑器和系统里表现都是一致的,宽度只决定于显示字体
  • 可以让作者更精确控制视觉呈现 有些恶趣味的程序员会画字符画
  • 语义 Tab 是制表符,用 Tab 就和用 Table 布局一样不科学
  • 压缩后文件更小因为空格不可避免,用 Tab 的话要压缩2种字符(脱离实际情况偷换概念)

为什么要混着用?

  • 简单 爷想怎么用就怎么用
  • Tab 党搞不定行末注释对齐 他们是行首缩进用 Tab ,行末注释对齐用空格

到底什么是 Tab?

根据史料 WikiPedia 记载 Tab key 代表了 tabulator key 制表键, 它的出现是因为做表格的时候对齐敲空格需要敲很多下,而且内容变动的时候对齐也比较纠结,干脆弄个 Tab 键按一下跳一列.

HTML 里的 Tab 和空格

不管多少个连续的 Tab 还是空格,在网页呈现的时候都会显示成一个空格,K 数依然是个问题,不过走 Gzip 的话也不是啥问题,因为 Gzip 对重复的东西压缩率特别高.

CSS JavaScript 里的 Tab 和空格

你写过这种整齐的 CSS 么?如果有,那么 Tab 只能解决行首对齐,行末只能靠空格
同时,空格也能解决行首对齐

注释里的 Tab 和空格

你写过注释么…

好吧,那真的要为了好看敲 4N 下么?

基本上靠谱的编辑器都会有这么个设定叫做按一下 Tab 出来4个空格,配套的还有Shift+Tab干掉4个空格
当然还有格式化为好看的对齐.

Sublime Text 2

这款优秀又轻量的编辑器非常适合性能不好的机器,功能基本上也够用,它的设置方法是

它会很聪明的在行首按 Tab 输入 4 个空格,按 BackSpace 退格键删除4个空格,非行首 Tab 依然 4 个空格,但退格就一个个删
不过它有个问题就是 Shift+Tab 只能光标在行首或者选中行的时候才能生效

IntelliJ IDEA

因为我 SSD 所以跑 IDE 无压力,基本上搞啥都是 IntelliJ IDEA ,必然是要介绍一番.
PS:同样适用于 WebStorm PHPStorm 等 Jetbrains 家一系列 IDE.

首先,他默认就是输入 Tab 出来4个空格
其次,光标定位在任何位置都可以 Shift+tab 反缩进当前行

最后,还记得那个右侧的注释对齐么,咱给你耍一耍
以下动画全部只按Tab,未成年人请勿模仿

前三行先 Tab 出去,第四行按 Tab 会自动用空格对齐

前三行初始位置一致的话推荐按住 alt 左键拖一下进入列编辑模式批量操作

如果第四行先走了,前三行 Tab 调整的时候会参考已有的注释对齐

硬了是为让你爽

最后,附送一个技巧:

如果在 Code Style > CSS 里头设置了 Align value: On conlon,按一下格式化快捷键,一秒变格格.

对 Intellij IDEA 感兴趣的同学附送
IntelliJ IDEA, PHPStrom, WebStorm 前端开发指南.

我选择空格

结论是: 按 Tab ,利用 IDE 自动生成对齐用的空格

作为曾经的 Tab 党,抗住了空格党所谓的好看、语义化、开源项目、Twitter 等大牛都用空格等等非常主观的攻击
败给了对齐

你呢?

原文:http://ooxx.me/tabs-vs-spaces.orz

【补充】

知乎:写代码时,缩进使用 tab 还是空格?

http://www.zhihu.com/question/19960028

英文文章《Smart Tabs》:https://www.emacswiki.org/emacs/SmartTabs

时间: 2024-08-05 06:19:11

缩进, Tab 还是空格?(转)的相关文章

vim 将tab转为空格

在vimrc中添加以下选项 set expandtab 会将tab转换为空格,如果要输入一个tab则需要Ctrl-V<Tab>来实现 set tabstop=4 会将tab转换为4个空格 使用shiftwidth改变插入或缩进的空格数,如使用4个空格 set shiftwidth=4 设置如下可以一次删除4个空格 set softtabstop=4

【转】vim - tab变空格

vim中将tab自动转换成空格 在vim中,有时需要将tab转换成space.使用ret命令(replace tab).[range]ret[ab]! [new-tabstop] 举例:将第一行到文件尾的tab转换成space,每个tab用4个space替代.:set expandtab:%ret! 4如果没有给定4,则用当前的tab宽度设定替换为space. 其它相关命令::set tabstop=4        设定tab宽度为4个字符:set shiftwidth=4     设定自动缩

Source Insight 4.0 文件类型、编码格式、tab转空格、tab键自动补全设置。。。

1.编码格式  -- 在 Options->Preferences->Files 中的最下面,Default enconding 为 UTF-8 2.tab转空格 其他相关设置如下: 以下是一些新特性的展示: 1.文件对比 这个功能在->Tools 中,可以支持当前文件和备份文件对比,也支持两个文件对比.甚至支持文件夹内容对比.简单使用后发现效果好不错,这是替代 UltraCompare 的节奏啊,不过应该不支持文件信息的二进制版本对比. 2.代码 Reformat 这个功能也在->

Vim实用技巧系列 - tab和空格的转换

有时候,我们会修改一些代码,而这些代码中的tab设定和我们自己的设定不一样.例如,我们自己的设定是以两个空格来代替tab,而要修改的代码则是使用tab.那么,我们应该怎样快速的将又有的tab转换为空格呢? 参考http://vim.wikia.com/wiki/Converting_tabs_to_spaces,方法如下 首先,正确的设置tab配置,例如 1 :set tabstop=2 2 :set shiftwidth=2 3 :set expandtab 接下来,输入如下命令就可以了 1

vi/vim tab键空格数修改

更改Tap键单位 vi/vim编辑器默认情况下,每按一次Tap相对于8个空格. (1)临时性更改 使用vi打开文件后,输入如下命令: :set tabstop=4 命令释义:更改为相当于四个空格. (2)永久性更改 也就是更改vi/vim的配置文件. 在用户目录下的.vimrc文件中添加上述命令,若没有这个文件,可以新创建该文件,然后写入:settabstop=4,退出保存即可. 此时vi中的tab键空格单位数被永久修改了.

SQL去除数据库表中tab、空格、回车符等特殊字符的解决方法

原文:SQL去除数据库表中tab.空格.回车符等特殊字符的解决方法 按照ASCII码, SELECT char(64) 例如64 对应 @,则 SELECT REPLACE('[email protected]', CHAR(64), 'kk'); 则结果为 abckkqq.com 依此类推, 去掉其他特殊符号,参考ASCII码对照表, 去掉tab符号为 select REPLACE('要替换的字符或列名',char(9),'替换的目标字符') 去掉空格符号为 select REPLACE('要

关于VSCode如何缩进两个空格

使用VSCode编写vue的时候,由于缩进问题经常报错.(默认缩进4个空格,实际规范上是两个空格) 更改VSCode的缩进格式. 但是此时你在编写代码的时候却发现任然缩进4格,此时因为vscode默认启用了根据文件类型自动设置tabsize的选项,在设置中添加: "editor.detectIndentation": false 软件会自动保存设置的更改.此时缩进就是2个空格. 原文地址:https://www.cnblogs.com/lanhuo666/p/10153453.html

sublime text 代码编辑器修改TAB为空格,设置空格缩进大小

sublime text 是一款非常优秀的代码编辑器,界面简洁优美,功能强大,使用十分便捷,如果喜欢这款代码编辑器朋友可以到官网下载安装. sublime text 默认的制表符是TAB,但是为了保证代码在各种环境下的规范性,开发人员会将TAB改为空格(space),缩进一次为两个空格.在 sublime text 我们可以也非常简单的设置这些参数. 启动 sublime text ,依次进入菜单 Preferences—>Settings - More—>Syntax Specific -

Sublime关于tab转空格的设置技巧

在编写大的工程的代码的时候,会要求一些多余的字符不应该存在,比如说末尾不应该有空格或者Tab这样的字符,比如说所有的Tab应该变成空格,这样工程不管在什么样的编辑器下看,格式都会比较统一,等等,可是如果每次缩进手动去替换字符,那个正常人都比较懒,迟早会忘记,所以为了一劳永逸,可以进行如下设置~ 首先,设置方法是依次单击菜单栏[Perferences]→[Setting-User] 其次就是各种设置内容了: ①设置一个为4个空格,并且自动替换 {??? "tab_size": 4,???