Как сделать так, чтобы команды были выделены жирным шрифтом в zsh?


18

Я настроил оболочку bash таким образом, чтобы любые вводимые мной команды отображались жирным шрифтом, а вывод команд отображался в обычном весе:

введите описание изображения здесь

Я сделал это, добавив \e[01mв конце моей PS1переменной, чтобы включить жирный шрифт, и используя, trap DEBUGчтобы выключить его:

trap 'printf "\e[0m" "$_"' DEBUG

Таким образом, \e[0mпечатается перед выполнением каждой команды, и я получаю нормальный вес шрифта в выводе.

Как мне добиться того же эффекта zsh?

Ответы:


13

Старомодным способом было использовать POSTEDIT

 POSTEDIT=$'\e[0m'

(и, кстати, это не bash, не используйте ловушку DEBUG для симуляции preexec: zsh - то, откуда она ), но начиная с zsh 4.3.11, вы можете использовать средство подсветки синтаксиса командной строки . Пусть ваша быстрая забота только о вашей подсказке и настройке

zle_highlight=(default:bold)

7

Что вы хотите, это функция preexec hook :

preexec() { printf "\e[0m"; }

Затем перед выполнением каждой команды preexecбудет выполнен сброс вашего шрифта до нормального.

Таким образом, чтобы получить то же самое приглашение вы показываете в вашем вопросе, добавьте эти строки в ~/.zshrc:

autoload -U colors && colors
PS1="%{$fg_bold[yellow]%}%n@%m %{$fg[blue]%}%~ \$ %{$reset_color%}%{$fg_bold[white]%}"
preexec() { printf "\e[0m"; }

Это правильная вещь, которую нужно использовать вместо ловушки DEBUG, но ни один из них не является правильным способом сделать командную строку жирным шрифтом.
— Жиль "ТАК ... перестать быть злым"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.