2013-12-18 5 views
1

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

Emacs shell mode

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

ansi-term

Что может быть проблема? Возможно ли правильно отобразить режим оболочки?

ответ

2

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

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

+0

Похоже, мне нужно придерживаться 'term' вместо' shell', 'eshell': <. Интересно, когда Emacs может иметь «одну оболочку», что все работает. –

2

Попробуйте решение, данное в Cucumber's ANSI colors messing up emacs compilation buffer:

(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.


пс: раскрасить даже больше выход оболочки Мне нравится играть с

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

или

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

и (add-hook 'shell-mode-hook (lambda() (goto-address-mode))) сделать URL-адреса clikable. Поиск того же материала для путей к файлам.

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

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

+0

Спасибо за информацию, однако доза 'ansi-color-apply-on-region' не работает, и мой режим оболочки уже может правильно отображать цвет ANSI. –

0

WRT на баш, иногда устанавливая $ PAGER помогает здесь, т.е.

пейджера = cat