这很奇怪 我在zsh定义了以下提示: local user_host='%{$terminfo[bold]$fg[green]%}%n @ %m%{$reset_color%}' local current_dir='%{$terminfo[bold]$fg[blue]%} %~%{$reset_color%}' local git_branch='$(git_prompt_info)%{$reset_color%}' local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" PROMPT="╭─${user_host} %D{[%a, %b %d %I:%M:%S]} ${current_dir} ${git_branch} ╰─%B$%b " RPS1="${return_code}" 它在gnome-terminal以及Emacs的ansi-termterminal( Mx ansi-term )中效果很好 – 请参阅下面的示例: 但是,在Emacs的multi-term下,它不能正常工作,如下所示: 我认为multi-term将能够解释像gnome-terminal或ansi-term这样的terminal相同的一组转义字符。 为什么它没有正确解释git-prompt_info和其他人返回的转义字符? 我也试过了: Mx set-terminal-coding-system并将其设置为utf-8-unix TERM=eterm-color多任期terminal中的TERM=eterm-color ,或在调用Emacs之前等 TERM=在多任期terminal中,或在调用Emacs之前等 从我的.zshrc删除任何export TERM 更新(2014年1月29日): 到目前为止,最好的解决scheme似乎是要做到以下几点: TERM=xterm-256color 但导致另一个我在这里报告的问题: 在Emacs的ansi-term中传递转义序列到shell 。