Это нечетно. Я определил следующее приглашение в 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
, а также в терминале ansi-term
в Emacs (M-x ansi-term
) - см. пример ниже:
Тем не менее, он не работает хорошо в multi-term
в Emacs, как вы можете видеть ниже:
Я думал, что multi-term
будет способен интерпретировать один и тот же набор escape-символов, что делает терминал вроде gnome-terminal
или ansi-term
. Почему это неверно интерпретирует escape-символы, возвращаемые git-prompt_info
и другими?
Я также пробовал:
- M-x
set-terminal-coding-system
и установите его наutf-8-unix
-
TERM=eterm-color
в многотерминальном терминале или перед вызовом Emacs и т.д. -
TERM=
в многотерминальном терминале или перед вызовом Emacs и т.д. - Удаление любого
export TERM
из моего.zshrc
Обновление (29 января 2014 года):
Лучшее решение, похоже, заключается в следующем:
TERM=xterm-256color
но вызывает еще одну проблему, о которой я сообщил здесь: Передача escape-последовательностей в оболочки в рамках ansi-term в Emacs.