【发布时间】:2020-01-21 19:11:46
【问题描述】:
在尝试使vim 在我的操作系统控制台上正常工作时,我注意到它在滚动之前向stdout 写入以下转义序列:\x1b[?1c。
问题是我无法在任何地方找到该特定序列的含义。我查过了:
- http://man7.org/linux/man-pages/man4/console_codes.4.html
- http://en.wikipedia.org/wiki/ANSI_escape_code
- https://vt100.net/docs/vt102-ug/appendixc.html
- https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences
谁能帮我解开这个谜?
附:如果一些额外的上下文可能会有所帮助,则在以下上下文中使用该序列:
\x1b[?25l\x1b[?1c\x1b[3;24r\x1b[3;1H\x1b[L
【问题讨论】:
-
这是一个 ANSI 转义序列的例子。 ANSI 序列的好处是它们具有明确定义的格式,因此如果软件或设备无法识别它很容易被忽略。
-
@MarkRansom 我完全同意。问题是,如果你想让
vim这样的野兽工作,你必须实现它想要使用的几乎所有东西(否则会出现视觉问题)。可悲的是,理论上vim并不真正需要更多我的控制台已经支持的东西(大约 90% 的东西),但它使用一些复杂的转义序列作为优化来减少屏幕重绘。这是一个功能强大的应用程序,但也有很多需求。 -
版主:将这个问题作为 StackOverflow 的题外话来结束,而关于同一主题的其他数十个问题 (转义序列)存在于此处且尚未关闭。要么全部关闭,要么重新打开。我得到了答案,但这不是重点。请参阅:[1] stackoverflow.com/questions/29939026 [2] stackoverflow.com/questions/4842424 [3] stackoverflow.com/questions/9949315 [4] stackoverflow.com/questions/15682537 [5] stackoverflow.com/questions/42072092 这个名单还在继续。
-
一致性不是 StackOverflow 的特性,习惯吧。在这种情况下,“版主”只是已经存在足够长的时间以收集大量声望点的人。很高兴你得到了答案,很多人就没那么幸运了。
标签: vim terminal console ansi-escape vt100