zsh изменить цвет ввода подсказки - PullRequest
7 голосов
/ 14 февраля 2012

Я хочу изменить цвет вводимого текста в zsh (текст, который я печатаю для каждой команды). Пример: в user@host> ls ~/ я бы хотел, чтобы ls ~/ был желтым, чтобы выделиться из стандартного вывода.

Я знаю, что могу сделать это в bash , используя

export PS1=" $BIGreen \u@\h \w \$ $IYellow" 

В конце подсказки цвет устанавливается на Желтый, вводимый текст I типа - желтый (с определенными соответствующими переменными цвета). И тогда

trap 'echo -ne "\e[0m"' DEBUG

Сбрасывает цвет до нормального, когда отображаются результаты моей команды.

Как я могу сделать это в zsh ? В настоящее время у меня есть

PROMPT=$'{$fg[green]%}%n@%{$fg[green]%}%m %# %{$fg[yellow]%}'

в .zshrc (установка цвета на желтый в конце), но это не работает. (Я также не знаю, как установить цвет на белый после команды).

1 Ответ

5 голосов
/ 30 ноября 2012

Попробуйте это:

PROMPT="%F{green}%n@%m %# %F{yellow}"
preexec () { echo -ne "\e[0m" }

Я пытался использовать trap, но похоже, что DEBUG не происходит до тех пор, пока команда не запустится / до следующего приглашения, поэтому команда завершается выполнением желтого цвета. Функция preexec() вызывается перед выполнением команды, поэтому вы можете восстановить там цвет по умолчанию.

...