Emacs shell 模式问题

Emacs shell 模式问题

当我运行 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)

解决了我的问题。无论如何,谢谢你的回答。关联这解决了我的问题。

相关内容