【发布时间】:2023-03-30 17:00:01
【问题描述】:
我在emacs 和ipython 中使用gnome-terminal、emacs -nw、eshell。
由于某种原因,emacs shell 错误地解释了字符。
这是我看到的(请注意最后 3 行):
$ ipython
Python 3.5.2 (default, Jun 28 2016, 08:46:01)
Type "copyright", "credits" or "license" for more information.
IPython 5.0.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
^[[?12l^[[?25hprint("hi")
^[[J^[[?7h^[[?12l^[[?25h^[[?2004lhi
^[[?12l^[[?25h
我相信这一定是一些编码问题,但我不确定如何诊断和修复它。
如果有帮助,这是我的 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
【问题讨论】:
-
如果你运行这个:
echo -e '\033[0;31mhello\033[1;0m',你会得到一个红色的“你好”,还是乱码?试图判断它是 ipython 还是你的整个 shell。如果你运行shell而不是eshell,你会看到同样的事情吗?最后,如果您可以使用不带颜色的 ipython,只需运行ipython --colors=NoColor。 -
尝试
shell打印一个红色的“hello”,eshell打印完全相同的字符串,就好像它没有解析它一样。但是 ipython 两者都有同样的问题。而--colors=NoColor也无济于事,结果相同。 -
我有两个
ipythons,一个是2.4,另一个是5。我对旧的没有问题。新的就是我的 virtualenv 中的。 -
好的,因为
--colors=NoColor没有帮助,这意味着它不是颜色问题,echo的区别是红鲱鱼。您遇到的问题是 ipython 正在尝试发送终端控制代码 - 重绘屏幕、绘制自动完成信息等。Emacs shell 不理解这些,这就是您无法运行man或 @ 的原因987654340@ 在 Emacs shell 中。可悲的是,没有通用的解决方法,只需使用单独的外壳即可。最好的办法是查看ipython --help并尝试找到禁用此自动完成功能的选项。
标签: linux emacs ipython eshell