当我运行 emacs shell 模式时
ls
我得到了关注
[0m[01;32mmanage.py[0m [01;34mtemplates[0m
这些必须是 manage.py 和模板。为什么会这样,如何修复?
答案1
这些是用于彩色显示的 vt100 代码(目前大多数 Linux 发行版通常默认启用)。Emacs shell 不处理 vt100 转义代码。
查明你的ls
命令是否有别名。
which ls
它看起来像下面的或者类似的东西吗?
ls: alias to ls --color=tty
如果是这样,您需要找到此别名的设置位置并取消其别名或更改其调用方式。
如果 EMACS 环境设置设为 ,则您的 shell 知道它正在 emacs shell 中运行t
。您可以执行类似下面的操作来设置替代功能。我使用 zsh,因此这包含一些特定于该 shell 的项目。
## for emacs
if [[ $EMACS = "t" ]] then
PROMPT="%# " # make the prompt simple
unsetopt zle # turn off advanced line editting
ls_pager=( cat ) # ls is simple piped to cat
ls_flags=( -A ) # default ls flags
fi
对于 bash,你可以使用别名 ls
alias ls='ls -A'
答案2
我把 ~/.emacs
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
解决了我的问题。无论如何,谢谢你的回答。关联这解决了我的问题。