Подтвердить что ты не робот

Что-то не так с оболочкой Emacs

Я использую Ubuntu8.10 и emacs-snapshot. Запуск shell-mode на emacs и ввода "ls" показывает escape-коды:

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

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

4b9b3361

Ответ 1

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

(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

Ответ 2

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

Ответ 3

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

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

if ( $?INSIDE_EMACS ) then
   alias l 'ls --color=never'
endif

Ответ 4

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

Ответ 5

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

$ unalias l
$ alias l ls --color=never

Ответ 6

Я завернул мой 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.