Что-то не так с оболочкой Emacs - PullRequest
31 голосов
/ 01 апреля 2009

Я использую Ubuntu8.10 и emacs-snapshot. При запуске shell-режима в emacs и вводе "ls" отображаются escape-коды:

скриншот http://lh3.ggpht.com/_os_zrveP8Ns/SdMmohKNjmI/AAAAAAAADB4/VlKpr5H_7ZA/s512/screen.png

Как получить ожидаемый результат?

Ответы [ 6 ]

45 голосов
/ 01 апреля 2009

Вы можете использовать AnsiTerm , который поддерживает цвета, или вы можете включить AnsiColor для обычной оболочки:

(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
5 голосов
/ 01 апреля 2009

Кроме того, вы можете выбрать другую оболочку: M-x term или M-x eshell. Первый обеспечивает интерфейс, который намного ближе к реальному эмулятору терминала, чем shell-mode (как только вы запустите его, вы можете выйти из режима с помощью C-c C-j и войти снова с C-c C-k). Последняя представляет собой реализацию оболочки, написанную на Elisp (вы можете использовать как общие команды оболочки, так и оценку кода на Лиспе).

3 голосов
/ 01 апреля 2009

Расширяя ответ vatine , вы можете добавить его в ваш .cshrc (.tcshrc / .bashrc), завернутый с проверкой переменной среды INSIDE_EMACS .

Например (из моего .tcshrc):

if ( $?INSIDE_EMACS ) then
   alias l 'ls --color=never'
endif
2 голосов
/ 10 августа 2010

M-x ANSI-color-for-comint-mode-on

1 голос
/ 21 ноября 2010

Я завернул свой alias ls ='ls --color=auto' в ~ / .bashrc:

case "$TERM" in
xterm*|rxvt*)
    if [ -x /usr/bin/dircolors ]; then
        alias ls='ls --color=auto'
        ...
    fi
    ;;
*)
    ;;
esac

Это отключает использование color=auto в emacs.

1 голос
/ 01 апреля 2009

Проблема в том, что "l" пытается раскрасить вывод, а в emacs его нет. Попробуйте следующее:

$ unalias l
$ alias l ls --color=never
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...