Это странно. Я определил следующую строку в zsh
:Emacs multi-term не отображает специальные символы правильно
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 (Mxansi-term
) - смотрите пример ниже:
Тем не менее, он не работает multi-term
в Emacs, как показано ниже:
Я думал multi-term
бы способны интерпретировать один и тот же набор управляющих символов, что делает терминал как gnome-terminal
или ansi-term
. Почему это не интерпретирует escape-символы, возвращенные git-prompt_info
и другими правильно?
Я также попытался:
- Mx
set-terminal-coding-system
и установить его вutf-8-unix
TERM=eterm-color
в нескольких перспективе терминала в или перед вызовом Emacs и т.д.TERM=
внутри мульти- или до вызова Emacs и т. д.- Извлечение любых
export TERM
из моего.zshrc
Update (29 января 2014):
Лучшее решение до сих пор, кажется, чтобы сделать следующее:
TERM=xterm-256color
но вызывает другую проблему, которую я сообщил здесь: Passing escape sequences to shells within ansi-term in Emacs.
Проверьте ответ здесь, чтобы увидеть, если это работает. http://stackoverflow.com/questions/8918910/weird-character-zsh-in-emacs-terminal –
Спасибо @JesusRamos Это отлично поработало для 'ansi-term'! По какой-то причине этого недостаточно для Emacs 'multi-term' (который должен продлить ansi-term) ... Hmmm –
Я перестал использовать несколько термина, и вместо этого я просто сам' M-x переименовал-буфер'. Это прекрасно работает именно так :) –