2

В то время как режим оболочки Emacs, когда я запускаю

ls

Я получаю

   [0m[01;32mmanage.py[0m     [01;34mtemplates[0m

это должны быть manage.py и шаблоны. Почему это так и как это можно исправить?

2 ответа2

5

Это коды vt100 для цветного отображения (которые обычно включены по умолчанию в большинстве дистрибутивов Linux сегодня). Оболочка Emacs не обрабатывает escape-коды vt100.

Узнайте, является ли ваша команда ls псевдонимом.

which ls

Это похоже на следующее или что-то подобное?

ls: alias to ls --color=tty

Если это так, вам нужно найти, где этот псевдоним установлен, и снять с него псевдоним или изменить способ его вызова.

Ваша оболочка знает, что она работает в оболочке emacs, если для параметра среды EMACS установлено значение t . Вы можете сделать что-то вроде следующего, чтобы установить альтернативные функции. Я использую zsh, так что он содержит некоторые элементы, специфичные для этой оболочки.

## for emacs
if [[ $EMACS = "t" ]] then
   PROMPT="%# "  # make the prompt simple
   unsetopt zle  # turn off advanced line editting

   ls_pager=( cat ) # ls is simple piped to cat
   ls_flags=( -A )  # default ls flags
fi

Для bash вы можете просто псевдоним ls

alias ls='ls -A'
1

Я поставил ~/.emacs

(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

и это решило мою проблему. В любом случае, спасибо за ответ. Ссылка, которая решила мою проблему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .