Como posso fazer com que os comandos apareçam em negrito no zsh?

18

Eu configurei meu shell bash para que qualquer comando digitado apareça em negrito e a saída dos comandos seja mostrada em peso normal:

insira a descrição da imagem aqui

Eu fiz isso adicionando \e[01mno final da minha PS1variável para ativar negrito e usando trap DEBUGpara desativá-lo:

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

Dessa forma, o \e[0mé impresso antes de cada comando ser executado e eu recebo o peso normal da fonte na saída.

Como eu iria obter o mesmo efeito zsh?

terdon
fonte

Respostas:

13

A maneira antiquada era usar POSTEDIT

 POSTEDIT=$'\e[0m'

(e pela maneira como isso não é bash, não use uma interceptação DEBUG para simular preexec: o zsh é de onde é ), mas desde o zsh 4.3.11 você pode usar o recurso de destaque da sintaxe da linha de comando . Deixe o seu pronto atendimento apenas sobre o seu pronto e defina

zle_highlight=(default:bold)
Gilles 'SO- parar de ser mau'
fonte
7

O que você quer é a função de gancho preexec :

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

Antes de cada comando ser executado, preexecserá executado para redefinir sua fonte ao normal.

Portanto, para obter o mesmo prompt exibido na sua pergunta, adicione estas linhas ao seu ~/.zshrc:

autoload -U colors && colors
PS1="%{$fg_bold[yellow]%}%n@%m %{$fg[blue]%}%~ \$ %{$reset_color%}%{$fg_bold[white]%}"
preexec() { printf "\e[0m"; }
cuonglm
fonte
Essa é a coisa certa a ser usada em vez de uma interceptação DEBUG, mas também não é o caminho certo para tornar a linha de comando em negrito.
Gilles 'SO- stop be evil'