2013-12-20 9 views
11

При использовании НПМ в M-x term, он генерирует сообщение цвета, как это (даже с -q):Как остановить цветной выход npm от поиска уродливого в режиме Emacs?

inverse color

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

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

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

Спасибо.

+2

Вы пробовали 'npm config set color false'? –

+0

Я этого не знал! Похоже, что это более практично, чем сделать emacs сменять цвет термина :) –

+0

Да, я понял то же самое - существует множество библиотек Emacs, код Lisp которых доступен для относительного новичка и прост в настройке, но 'term-mode' является не одна из этих библиотек. –

ответ

20

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

npm config set color false 

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

+19

Вы также можете запустить свою команду как «npm --no-color ', что я и делаю в своих сценариях. – Guss

3

Я создал обертку для npm в davidchambers/dotfiles#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)" "[email protected]" \ 
    1> >(__strip_background_colors $'\n' >&1) \ 
    2> >(__strip_background_colors '' >&2) 
} 

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