如何让Emacs外壳模式渲染(或忽略)我的颜色,而不是打印ASCII码?

如何让Emacs外壳模式渲染(或忽略)我的颜色,而不是打印ASCII码?,emacs,colors,ascii,Emacs,Colors,Ascii,该问题的症状类似于“[0m[27m[24m[J[34;1”,在终端上转换为蓝色 -A以下内容应适用于.bash_配置文件或.bashrc case $TERM in xterm-color) export PS1='\[\e]0;\W\007\]\[\e[34;1m\]\W\[\e[0m\]\$ ' ;; *) export PS1='\W\$ ' ;; esac 我在.emacs (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-o

该问题的症状类似于“[0m[27m[24m[J[34;1”,在终端上转换为蓝色


-A

以下内容应适用于.bash_配置文件或.bashrc

case $TERM in
xterm-color)
export PS1='\[\e]0;\W\007\]\[\e[34;1m\]\W\[\e[0m\]\$ '
;;
*)
export PS1='\W\$ '
;;
esac

我在
.emacs

(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
对于“忽略”选项,在
~/.emacs{bash,tsch中,无论您的shell被称为什么}
文件中,放置类似“
alias ls=ls
”或“
unset ls\u COLORS
”的内容。此文件在由emacs创建的所有从属shell中执行

将文件
~/.emacs\u shellname
的内容作为输入发送给新的shell,如果存在,其中
shellname
是加载shell的文件名。例如,如果使用bash,发送给它的文件是
~/.emacs\u bash
。如果找不到该文件,emacs将尝试回退到
~/.emacs.d/init\shellname.sh


目前给我带来一些成功的解决方案是将shell函数重新定义为ansi术语:

;; shell-mode
(defun sh ()
  (interactive)
  (ansi-term "/bin/zsh"))

在最新版本的Emacs中不需要自动加载(默认情况下自动加载)。这确实有帮助,(蓝色显示)但是,缓冲区中仍然出现了一些ASCII控制代码。毫无疑问,有一个或多个细节需要与此解决方案结合。我认为此答案正在获得支持,这反映了它在stackoverflow用户的一些常见平台上工作。但也请参阅已接受的答案。到目前为止,在bash中对我有效。有关my config:zsh+GNU Emacst这是一个好主意。它还解决了shell模式与more/less和man等命令的不兼容性。隐藏“真实”shell命令。直接使用term或ansi term,而不是隐藏普通shell模式。