Почему в режиме оболочки отображается мусорный код?

Когда я использую bower в M-x shell, как вы можете видеть на картинке, отображается какой-то мусорный код.

Режим оболочки Emacs

Однако M-x ansi-term работает хорошо

ansi-term

В чем может быть проблема ? Можно ли сделать так, чтобы режим оболочки отображался правильно?


person Rangi Lin    schedule 18.12.2013    source источник


Ответы (3)


Эти символы представляют собой escape-последовательности ANSI, которые эмулятор терминала использует для визуальных эффектов, таких как изменение цвета текста. shell-mode явно не умеет отображать эти коды по умолчанию. Вам может понадобиться временный режим:

Некоторым программам (например, самому Emacs) необходимо детально управлять внешним видом экрана терминала. Они делают это путем выдачи специальных управляющих кодов. Term mode распознает и обрабатывает управляющие последовательности стандарта ANSI в стиле VT100, которые принимаются большинством современных терминалов, включая xterm. (Следовательно, вы можете запускать Emacs внутри окна Emacs Term.)

person Tim Pierce    schedule 18.12.2013
comment
Похоже, мне нужно придерживаться term вместо shell, eshell: ‹. Интересно, когда у Emacs будет оболочка One, которая просто работает? - person Rangi Lin; 19.12.2013

Попробуйте решение, приведенное в Цвета ANSI огурца портят буфер компиляции emacs:

 (require 'ansi-color)
 (defun colorize-compilation-buffer ()
 (toggle-read-only)
 (ansi-color-apply-on-region (point-min) (point-max))
   (toggle-read-only))
 (add-hook 'compilation-filter-hook 'colorize-compilation-buffer)

это прекрасно работает для меня на emacs24.


ps: чтобы еще больше раскрасить вывод оболочки, с которым я люблю играть

M-x highlight-regexp RET a regexp, i.e. \[OK\] RET a color (make use of TAB to see choices)

or

(add-hook 'shell-mode-hook (lambda () (highlight-regexp "\\[OK\\]" "hi-green-b")))

и (add-hook 'shell-mode-hook (lambda () (goto-address-mode ))), чтобы URL-адреса были кликабельными. Ищу то же самое для путей к файлам.

изменить: сделать пути к файлам интерактивными так же просто, как использовать compilation-shell-minor-mode :)

edit2: мои источники: http://wikemacs.org/index.php/Shell

person Ehvince    schedule 18.12.2013
comment
Спасибо за информацию, однако ansi-color-apply-on-region доза не работает, и мой режим оболочки уже может правильно отображать цвета ANSI. - person Rangi Lin; 19.12.2013

WRT в bash, иногда здесь помогает установка $ PAGER, т.е.

ПЕЙДЖЕР = кошка

person Andreas Röhler    schedule 18.12.2013