5

Мой emacs перечисляет странные escape-символы в буферах оболочки:

me@ubuntu:~//configuration.template/hooks$ 
me@ubuntu:~//configuration.template/hooks$ ls
[0m[01;32mpost-commit[0m  [01;32mpost-commit~[0m  [01;32mpost-update[0m  
[01;32mpost-update~[0m  [01;32mpre-commit[0m  [01;32mpre-commit~[0m  [01;32mupdate[0m      update~

Кто-нибудь знает, как я могу это исправить?

3 ответа3

5

«ansi-color-for-comint-mode» обрабатывает некоторые цвета в оболочках. Это не идеально, но это помогает. Чтобы включить его, перейдите в свою оболочку и выполните [M-x]ansi-color-for-comint-mode-on[RET] .

-John

3

Эти символы являются изменяющими цвет управляющими последовательностями. Эти последовательности не работают в буферах emacs *shell* : вместо этого они отображаются почти напрямую.

Вам следует изменить файл запуска оболочки (вероятно, ~/.bashrc), чтобы ls использовал цвета только в тех терминалах, которые их поддерживают. На практике это, вероятно, будет означать для каждого типа терминала, кроме dumb (который является типом терминала, предоставленным в буферах *shell*). Тип терминала указывается в переменной окружения TERM , поэтому вы можете сделать что-то вроде этого:

if [ "$TERM" != "dumb" ]; then
  alias ls='ls --color=auto'
fi
0

В соответствующей заметке, если вы видите эту проблему с командой emacs grep, введите ее в командной строке:

grep --color=NEVER -nH -e "searchstring" *

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