制表符
制表符 | |
---|---|
术语名称 | 制表符 |
英语名称 | tab character |
水平制表符 | |
---|---|
术语名称 | 水平制表符 |
英语名称 | horizontal tabulation |
别名 | character tabularion, tab, HT, \t |
垂直制表符 | |
---|---|
术语名称 | 垂直制表符 |
英语名称 | vertical tabulation |
别名 | VT, \v |
制表位 | |
---|---|
术语名称 | 制表位 |
英语名称 | tab stop |
别名 | tabular stop |
制表符(tabular characters)是一种控制字符,包括水平制表符(horizontal tabulation)和垂直制表符(vertical tabulation),当不特别指明,或语境中指一个特定字符时,“制表符”也默认指“水平制表符”。这两个字符出现在很多字符集中。在 ASCII 中为 0x09
和 0x0B
,在 Unicode 中为 U+0009
<control-0009>, character tabulation, horizontal tabulation (HT), tab 。需要指代这两个字符时,经常分别缩写为 HT 或 TAB 和 VT ,也被展示为 ␉ (U+2409
Symbol for Horizontal Tabulation)和 ␋ (U+240B
Symbol for Vertical Tabulation)。在 ^ 表示法中分别表示为 ^I
和 ^K
。 C 语言及相关语言将这两个字符分别记为 \t
和 \v
。
历史
最初 TAB 的含义是打字机上的按键名,这个键也是现代键盘上 Tab ↹
键的祖先。这一个键按下时,通过称为“制表托架(tabulator rack)(中文标准翻译不确定,我没查到)”的结构,打字机的打印头/字车(carriage)会前进到下一个对齐的制表位(tabulator stop, tab stop),以便于在制作表格时直接将其放置于某个对齐的行列位置,以避免过多且还需要人工计数的空格退格回车操作影响打字效率。制表托架上的具体位置是灵活的,可以手动拆卸重装,以用于不同宽度的表格需求,也可以用在首行缩进上。实际上还有更复杂的情况,比如右对齐的数字列需要移动到下一个有偏移的制表位。
到打印机时代,制表符仍然用于通过可移动的金属齿所确定的机械制表位,确定制表符造成的打印位置变化,并手动将其与预印的表格相匹配。实践中,由于预印表格相对固定,可设置制表位很快被固定制表位代替,此后产生的事实标准是水平方向上 8 个字符一个制表位,竖直方向上 6 行一个制表位。对非表格的打印,制表符也成了一种简单的压缩方法,可以通过制表符移动到制表位再补充空格、退格、回车来达到所需的打印位置。
现代使用
现代,水平制表符和制表键仍然发挥着各自的作用。
- 制表符在文本处理中通过制表键插入,一般被软件处理为当前插入位置前进到文档中的下一个制表位。根据不同场景,这些制表位可能被自由设置为不同个数字符的缩进长度(常见的如 2 个空格、 4 个空格、 8 个空格等),也可能通过插入适量空格数到下一制表位模拟制表符工作原理以避免缩进长度设置影响展示情况(若被替换,称为软 tab(soft tab),否则称为硬 tab(hard tab),也就是是否强硬地把 TAB 字符写入的意思)。
- 同样在文本处理中,由于现代表格通常用其他软件,文本处理中基本用于缩进。但是用于缩进时 8 个空格太长了,文本编辑器基本上都默认为 4 个空格。
- 在表格处理中,制表键通常将光标移动到表格中同一行的下一列, Shift+Tab 与其相反,移动到同一行上一列的位置。
- 制表键在图形化场景中,通常被设计为将焦点按顺序移动到下一个控件,以保证可以仅通过键盘进行任意操作。
- 制表键经常被用于自动补全场景。
- 由于制表符很少出现在普通文本内容中,水平制表符和换行符可以安全地用于分割大部分文本和数值数据,这样的文件称为 TSV (tab-separated values,制表符分隔的值)。
垂直制表符的使用情况就很少了,现代几乎不再使用这个字符。