В то время как режим оболочки Emacs, когда я запускаю
ls
Я получаю
[0m[01;32mmanage.py[0m [01;34mtemplates[0m
это должны быть manage.py и шаблоны. Почему это так и как это можно исправить?
Это коды 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'
Я поставил ~/.emacs
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
и это решило мою проблему. В любом случае, спасибо за ответ. Ссылка, которая решила мою проблему.