这很奇怪。我在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-term
终端上都能很好地工作(M-x ansi-term
)- 请参见下面的示例:
但是,在Emacs的multi-term
下,它表现不佳,如下所示:
我认为multi-term
能够解释与gnome-terminal
或ansi-term
等终端相同的转义字符集。为什么无法正确解释由git-prompt_info
和其他函数返回的转义字符?
我还尝试过:
- M-x
set-terminal-coding-system
并将其设置为utf-8-unix
TERM=eterm-color
在multi-term终端中,或在调用Emacs之前等。TERM=
在multi-term终端中,或在调用Emacs之前等。- 从我的
.zshrc
中删除任何export TERM
更新(2014年1月29日):
到目前为止,最好的解决方案似乎是执行以下操作:
TERM=xterm-256color
但这会引起另一个问题,我在此处报告了该问题:传递转义序列到emacs中ansi-term内嵌shell。
.zshrc
中有export TERM='xterm-256color'
。我应该将其更改为eterm-color
吗? - Amelio Vazquez-Reinaexport
。TERM=xterm-256color
就足够了。我也在gnome-terminal
中使用它。如果将其“导出”,emacs 似乎会感到困惑,并且在 term-mode 中不会将其设置为eterm-color
,而是将其定义为xterm-256color
,这会给那些大量使用 ncurses 等程序的用户带来一些有趣的效果。 - mikyraTERM=xterm-256color
解决了我的问题。如果它导致其他问题,我也不会感到惊讶,但我不会去寻找 -- 我已经走过那条路,结果只有泪水。 - duma