在Mx ansi-term中使用Zsh提示之前,杂散跟踪4m


10

最近,我读在Emacs运行壳,花一些时间来适应我的精心岩组迅速将工作与有限的能力M-x shellM-x ansi-term

经过这些努力,我现在终于可以在Emacs中使用Zsh了,但是,尽管有一点点麻烦M-x ansi-term4m在提示之前,我总是会看到混乱的文本。

提示前出现杂散文本

如您所见,这种现象似乎与实际的提示主题无关。它也与任何内置提示一起出现,甚至是不使用任何精美控制字符的简单提示。实际上,它甚至会在默认提示下发生,即,如果我不带I启动Zsh .zshrc

好吧,这实际上只是一个小小的麻烦,如果我不能摆脱它,我也不会很介意- M-x shell无论如何,我还是更喜欢这种情况不会发生的问题。

但是,即使我确实尝试调试它,也让我一直无法找到导致该问题的原因,这真让我感到烦恼。但是,我必须说,我对终端的理解相当有限,因此我可能会错过非常明显的地方。

我在OS X 10.10上。我的Emacs是25.0.50,使用Homebrew从树干直接构建,没有特殊标志。优胜美地随附的Zsh是5.0.5,但是通过Homebrew安装的5.0.7也会出现此问题。

谁能阐明这个问题?


尝试在.zshrc或(setq system-uses-terminfo nil)中设置export TERM = xterm-256color
kmicu

system-user-terminfo没有改变任何东西。更改$TERM解决了问题,但这不能解决,是吗?毕竟,从本质ansi-term上讲,这是一个谎言:不是xterm,并且绝对不支持256色。
lunaryorn

4m是来自ANSI转义代码的工件,用于定义颜色,例如\x1b[37;4m用37指定白色,用4指定带下划线的文本。我无法重现您的问题。我的zsh是5.0.7,而ansi-term中的'echo $ TERM'给了我eterm-color,我的emacs是24.4.1。我还测试了干净的默认版本'env HOME =〜/ tmp / emacstest emacs -Q',但看不到任何问题。
kmicu 2015年

@kmicu在OS X 10.10上,即使emacs -Q没有Zsh配置,我也可以始终再现该问题。
lunaryorn 2015年

Answers:


10

显然,此问题是由于缺少terminfoeterm-color引起的。我设法按照该答案中的说明解决了该问题,并将适当的条目安装到terminfo数据库中。特别:

$ tic -o ~/.terminfo /usr/local/share/emacs/25.0.50/etc/e/eterm-color.ti

我仍然不确定为什么需要这样做。 term.el实际上会导出$TERMINFO指向该目录的变量,因此外壳程序应该能够找到terminfo。Zsh似乎忽略了目录,但是…

~/.terminfo不过,它确实会查看,因此上述命令使terminfo条目可用于Zsh。

如果有人可以提供更好的解释或不需要手动干预的解决方案,我将感到非常高兴。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.