垂直制表符是什么?

299

垂直制表符(在C语言中为\v,ASCII 11)最初的历史用途是什么?

它曾经有过键盘上的按键吗?那么人们如何生成它呢?

今天是否仍有任何语言或系统在使用垂直制表符并且其中具有一些有趣和有用的功能?


11
好的,我会尽力进行翻译。以下是需要翻译的内容:Great explanation here: http://en.wikipedia.org/wiki/Tab_key这里有一个很好的解释:http://en.wikipedia.org/wiki/Tab_key - Zabba
3
我一直在.vsv文件中使用它,这样我就不必考虑如何引用字段中的文本数据。 - Ron
1
如果您正在考虑用于分隔符分隔的值(如CSV和TSV),请查看ASCII的四个信息分隔符字符,为四个层次设计:0x1c(文件分隔符“^\”),0x1d(组分隔符“^]”),0x1e(记录分隔符“^^”)和 0x1f(单元分隔符“^_”)。我认为它们没有得到更好的采用是因为它们是非打印字符,但\v0x0b^K)可能会呈现为\n\t并且更糟。 Vim通过其控制代码显示垂直制表符和信息分隔符。 - Adam Katz
10个回答

272

垂直制表符曾用于加快打印机的垂直移动。一些打印机使用带有各种制表点的特殊制表带,这有助于对齐表格内容。VT到页眉部分,填写页眉,VT到正文区域,填写行,VT到表格页脚。通常它会被编码为字符常量。从键盘输入时,可以使用 CTRL-K

我认为现在没有人再使用它了。大多数表格是在像PostScript这样的打印机控制语言中生成的。

@Talvi Wilson指出它在Python中以 '\v' 的形式使用。

print("hello\vworld")

输出:

hello
     world

上面的输出似乎导致默认垂直大小为一行。我已经使用perl "\013"进行了测试,结果相同。这可以用于在将换行符转换为回车符+换行符的设备上执行换行而不带有回车。


16
它也可以用来快速滚动屏幕,在300 Baud时代非常有用。 - Talvi Watia
8
有些数据提供商(例如TechData)会在CSV文件中使用它来替换换行符\n。 - Wiliam
2
@BillThor:很好,但VT的确切规格是什么?它实际上是做什么的?根据您的描述,我认为它将想象中的“光标”垂直移动到下一个“垂直制表符”位置。但它是否还将光标返回到行的开头?或者它是否保持光标的X位置不变? - AnT stands with Russia
3
我相信规范是要向下推进到下一个制表位。任何水平移动将取决于设备。换行符被指定为前进到下一行,某些设备也会执行回车操作,而其他设备则只会推进到下一个字符位置并继续打印。使用 stty 命令的 onlret 选项可以通过添加回车符来保持一致的行为。 - BillThor
1
@ValentinHeinitz 有趣的重新利用<VT>。有一些控制字符是为此目的而设计的,例如<SOH>(标题开始)、<SOT>(文本开始)和分隔符字符<FS>、<GS>、<RS>和<FS>,所有这些字符可能比<VT>更为晦涩。 - BillThor
显示剩余6条评论

78

13
所以,这就是“shift-enter”吗? - Timothy Lee Russell
3
不,而是Ctrl + Enter! - Praveen Kumar Purushothaman
@dan04:你能否更新一下微软Word KB文章的链接? - Alex Essilfie
2
这也适用于OneNote(以及可能具有类似Word输入的所有MS Office产品)。与@PraveenKumar相反,它在按Shift + Enter时执行此操作,而不是Ctrl + Enter。后者什至少在我的情况下无效。 - Gerrit-K
@paulroho 在 Word 中可以,但在 OneNote 中不行。 我很抱歉之前关于“可能每个其他带有类似Word输入的MS Office产品”的说法是不正确的,因为OneNote的输入实际上并不是真正的MS Office集成,而更像是一个外观相似的应用程序...尽管如此,我的第二个说法仍然有效:Shift+Enter插入VT,而不是Ctrl+Enter(在Word中插入分页符,在OneNote中则什么也不做)。 - Gerrit-K
在Google文档/表格/幻灯片等中,同样的规则适用。键盘快捷键是 Shift+Enter - Solomon Ucko

22
在医疗行业中,VT 作为起始帧字符用于 MLLP/LLP/HLLP 协议,这些协议用于构建 HL-7 数据的框架。自上世纪 80 年代后期以来,HL-7 数据一直是医疗交换的标准,并且仍然广泛使用。

16

它在打字机时代用于向下移动页面到下一个垂直停止位,通常间距为6行(与水平制表符以8个字符为单位移动的方式类似)。

在现代设置中,vt已经失去了几乎所有的意义。


14

ASCII垂直制表符(\x0B)仍在某些数据库和文件格式中作为字段内的换行符使用。例如:


6

我发现在pptx文本框中,在盒子中每行文本的末尾使用VT字符以调整文本大小适应盒子。 它似乎是由PowerPoint自动生成的(而不是用户引入),以将文本移动到下一行并将完整文本块固定到文本框中。在下面的示例中,§的位置如下:

"This is a text §
inside a text box"

3

垂直制表符是与换行符相反的,即它向上移动一行。它与制表位无关。如果您想证明这一点,请在RS232终端上尝试。


1
我曾希望在Python中使用垂直制表符来浏览Microsoft Windows控制台屏幕。但是,库msvcrt.putch(b'\v')并不能实现这一点。 - DevPlayer

2

我相信它仍在使用中,但不确定。可能甚至有一个键盘组合。

由于英语是从左到右书写的,阿拉伯语是从右到左书写的,世界上还有一些语言是从上到下书写的。在这种情况下,垂直制表符可能与水平制表符用于英文文本一样有用。

我尝试搜索,但还没有找到有用的东西。


11
我曾考虑过这个,但后来放弃了,因为在竖排语言中,一个普通的制表符会更具有语义意义。 - Ryan Hiebert

2

R0byn的经验类似(现在已隐藏答案),我正在尝试使用Powerpoint幻灯片演示,并将幻灯片上的主体文本转储出来,发现通常会找到回车符(ASCII 13 / 0x0d / ^ M )或换行符/新行(ASCII 10 / 0x0a / ^ J )字符的所有位置,它使用垂直制表符(ASCII 11 / 0x0b / ^ K )代替,可能是为了与dan04上述Word相同的原因而用作“换行符”,以保持在同一段落中。这是个好问题,因为我完全认为这个字符今天会像电传终端一样无用。


0
我尝试了这段代码:
print("hello\vbanana")

在Python 3.10.11的IDLE上运行,得到了以下结果:
hellobanana

然后,我在命令提示符中尝试了相同的代码,并得到了以下结果:
hello
banana

在某些地方,它会显示为奇怪的字符,而在其他地方则完全像换行符一样显示。请注意,我是在一台Windows 11电脑上运行的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接