这些shell转义字符是什么?

8

我正在尝试在Emacs(在ArchLinux下)中使用coffee script repl,但是我看到提示周围有这些转义字符:

[1Gcoffee> [0K[9G

因为我已经启用了ansi-color-for-comint-mode,所以这些不应该是颜色。那么有人认识这些颜色吗?

顺便说一下:有趣的是,在我的Emacs+Cygwin设置下,我没有遇到这个问题!


据我所知,根本原因在于Emacs的终端仿真仅限于vt100或至少缺少一些扩展。我刚刚提出了这个问题,扩展了它的支持http://emacs.stackexchange.com/questions/9871/extended-cursor-movement-in-terminal-emulator-cha-and-others - user23987
2个回答

9

我不知道它们来自哪里(很明显与您的shell提示有关,但无法说得更多)。

我的理解是:

  • ESC[1G - 移动到第1列(光标字符绝对位置)
  • ESC[0K - 清除右侧内容
  • ESC[9G - 移动到第9列

这似乎是shell尝试确保提示符位于空行的最左侧。不确定您使用的是哪个shell,但是当启用PROMPT_SP选项时,zsh会执行类似操作。不过,我认为它不使用上述序列。

很多控制序列可以在这里找到。请注意,序列“ESC[”被解释为“控制序列引导符”(CSI),并在该页面上显示为这样。


谢谢,我会看看手头的信息是否能找到罪犯。顺便说一下,我正在使用bash。 - Nicolas Buduroi
1
很高兴能够解释这些代码的含义,但是原帖作者是否找到了实际的解决方案呢?我自己也遇到了同样的问题。 - semperos

8
我遇到了同样的问题,并通过添加以下内容解决了它:
export NODE_NO_READLINE=1

添加到我的.bashrc文件中。

因此,这些字符似乎来自于CoffeeScript REPL使用Readline的方式。也许你在Cygwin上没有遇到这个问题是因为那里没有可用的Readline。


谢谢您的回答(也感谢提问者)!我刚刚遇到了同样的问题,搜索后就来到了这里。如果不是通过Ubuntu构建CoffeeScript,我可能永远想不到会是Node的问题。 - oylenshpeegul

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