Linux emacs shell错误地解释了ipython字符

Linux emacs shell错误地解释了ipython字符,linux,emacs,ipython,eshell,Linux,Emacs,Ipython,Eshell,我正在使用gnome终端,emacs-nw,eshell内部emacs,以及ipython 出于某种原因,emacs shell错误地解释了字符 以下是我看到的(请注意最后3行): 我相信这一定是编码问题,但我不确定如何诊断和修复它 以下是我的env输出,如果有帮助: $ env XDG_VTNR=2 XDG_SESSION_ID=c3 TERM=xterm-256color SHELL=/bin/bash XDG_MENU_PREFIX=gnome- VTE_VERSION=4402 GJS_

我正在使用
gnome终端
emacs-nw
eshell
内部
emacs
,以及
ipython

出于某种原因,emacs shell错误地解释了字符

以下是我看到的(请注意最后3行):

我相信这一定是编码问题,但我不确定如何诊断和修复它

以下是我的
env
输出,如果有帮助:

$ env
XDG_VTNR=2
XDG_SESSION_ID=c3
TERM=xterm-256color
SHELL=/bin/bash
XDG_MENU_PREFIX=gnome-
VTE_VERSION=4402
GJS_DEBUG_OUTPUT=stderr
WINDOWID=29360134
GJS_DEBUG_TOPICS=JS ERROR;JS LOG
USER=adrin
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
SESSION_MANAGER=local/mydarlingarch:@/tmp/.ICE-unix/498,unix/mydarlingarch:/tmp/.ICE-unix/498
USERNAME=adrin
MOZ_PLUGIN_PATH=/usr/lib/mozilla/plugins
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
MAIL=/var/spool/mail/adrin
DESKTOP_SESSION=gnome
QT_QPA_PLATFORMTHEME=qgnomeplatform
XDG_SESSION_TYPE=x11
PWD=/home/adrin
LANG=en_US.UTF-8
GDM_LANG=en_US.UTF-8
GDMSESSION=gnome
XDG_SEAT=seat0
HOME=/home/adrin
SHLVL=1
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
XDG_SESSION_DESKTOP=gnome
LOGNAME=adrin
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
WINDOWPATH=2
XDG_RUNTIME_DIR=/run/user/1000
DISPLAY=:0
XDG_CURRENT_DESKTOP=GNOME
COLORTERM=truecolor
XAUTHORITY=/run/user/1000/gdm/Xauthority
_=/usr/bin/env

多亏了@brian malehorn,问题确实出在
ipython
发送的控制字符上

这可以通过使用
echo-e'\033[0;31mhello\033[1;0m'
尝试回显彩色文本来检查,在我的情况下,它打印了彩色文本。如果问题是彩色文本,可以通过以下方法解决:

ipython --colors=NoColor
但是,我的问题不是上述问题,因此它必须是ipython发送到shell的控制字符。可以使用以下方法禁用此功能:

ipython --simple-prompt

如果运行此命令:
echo-e'\033[0;31mhello\033[1;0m'
,是否会收到红色的“hello”,或是乱码文本?尝试判断它是ipython还是您的整个shell。如果您运行
shell
而不是
eshell
,您会看到同样的情况吗?最后,如果您可以使用不带颜色的ipython,只需运行
ipython--colors=NoColor
。尝试
shell
会打印一个红色的“你好”,而
eshell
打印出完全相同的字符串,就好像它没有解析一样。但是ipython在这两个方面都有相同的问题。而且
--colors=NoColor
没有帮助,结果相同。我有两个
ipython
s,一个是2.4,另一个是5。我没有旧的问题。新的是我在我的virtualenv中拥有的。好的,是吗nce
--colors=NoColor
没有帮助,这意味着它不是一个颜色的东西,
echo
的差异是一个令人费解的问题。您遇到的问题是,ipython正在尝试发送终端控制代码-重新绘制屏幕,绘制自动完成信息等。Emacs shell不理解这些,这就是您无法运行
的原因>Emacs外壳中的man
less
。遗憾的是,没有通用的解决方案,只需使用单独的外壳即可。最好的办法是查看
ipython--help
并尝试找到禁用此自动完成的选项。
ipython --simple-prompt