Как мне не дать цветному выводу npm выглядеть ужасно в режиме Emacs term-mode?

При использовании npm в M-x term, он генерирует цветное сообщение вот так (даже с -q):

обратный цвет

Информация от what-cursor-position

There are text properties here:
font-lock-face       (:foreground "red3" :background "black" :inverse-video nil)
fontified            t

Это некрасиво, а также трудно читать в других темах, можно ли менять цвет на лету? Например, измените цвет текста, который соответствует npm http, npm ERR!

Благодарю.

3 ответа

Решение

Вы можете отключить цвета в npm с помощью команды:

npm config set color false

Это не совсем отвечает на ваш вопрос, потому что это не способ переопределить цвета ANSI в term-mode, но это решит вашу проблему, так как вывод npm больше не будет уродливым и трудным для чтения.

Я создал обертку для npm в https://github.com/davidchambers/dotfiles/pull/1. Вот код в полном объеме:

__strip_background_colors() {
  local output="$(sed $'s:\x1B\[4[0-9]m::g')"
  [[ -n $output ]] && printf %s%s "$output" "$1"
}

npm() {
  # Strip the visually offensive background colours from npm's output,
  # leaving the foreground colours intact.
  NPM_CONFIG_COLOR=always "$(which npm)" "$@" \
    1> >(__strip_background_colors $'\n' >&1) \
    2> >(__strip_background_colors '' >&2)
}

Удаляет оскорбительные цвета фона, сохраняя довольно приятные цвета переднего плана.:)

С 2018 года:

https://github.com/npm/cli/commit/ecfbb16dc705f28aa61b3223bdbf9e47230a0fa4 Конфигурация: отключить цвет по умолчанию, когда$NO_COLORустановлен (#19929).

Другие вопросы по тегам