Как сделать так, чтобы команды были выделены жирным шрифтом в 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.