vcs_info, configuração adequada em zsh?

1

Instalei recentemente o zsh e aproveitei para configurá-lo corretamente, visão geral rápida dos métodos testados:

setopt prompt_subst Use o prompt_subst para que possamos simplesmente usar as variáveis vcs_info e elas serão atualizadas durante o tempo de execução.

Funciona com cores e não deve quebrar nada tentando modificar o PS1. no entanto, não consigo descobrir quais são as desvantagens de tê-lo ativado?

psvar Use um psvar para substituir a linha de comando, funciona, mas bagunça cores.

atualiza PS1 a cada precmd Funciona bem, mas qualquer coisa que tente modificar o PS1 falha ao ser redefinida. Poderia ser corrigido com hacks, mas é IMO muito feio / frágil, então pule este aqui.

-

Então, para resumir:

  1. Quais desvantagens existem para ativar o prompt_subst?
  2. Existe alguma maneira de fazer as cores funcionarem com psvar

Se o prompt_subst tiver desvantagens significativas, então 2 seria a melhor alternativa, se possível, 3 é um pouco frágil, então não use isso.

A parte relevante do meu .zshrc

...

autoload -Uz vcs_info

# Needs to be enabled for the prompt to change
setopt prompt_subst

# Formats
VCS_FORMAT="%{$fg_bold[magenta]%}(%{$reset_color%}%{$fg_bold[yellow]%}%b%{$reset_color%}"
VCS_APPEND="%{$fg_bold[magenta]%})%{$reset_color%}"
VCS_NORMAL_FORMAT="${VCS_FORMAT}%{$fg_bold[magenta]%}:%{$reset_color%}%{$fg_bold[green]%}%8.8i%{$reset_color%}${VCS_APPEND}"
VCS_ACTION_FORMAT="${VCS_FORMAT}%{$fg_bold[magenta]%}:%{$reset_color%}%{$fg_bold[red]%}%a%{$reset_color%}${VCS_APPEND}"

zstyle ':vcs_info:*' enable git hg svn 
zstyle ':vcs_info:*' get-revision true

zstyle ':vcs_info:*' formats $VCS_NORMAL_FORMAT 
zstyle ':vcs_info:*' actionformats $VCS_ACTION_FORMAT

precmd () {
    vcs_info

    PS1_STR=""
    PS1_STR="${PS1_STR}%{$fg_bold[magenta]%}[%{$reset_color%}%{$fg_bold[green]%}%m%{$reset_color%}%{$fg_bold[magenta]%}]%{$reset_color%}" #hostname
    PS1_STR="${PS1_STR}%{$fg_bold[magenta]%}[%{$reset_color%}%{$fg_bold[blue]%}%n%{$reset_color%}%{$fg_bold[magenta]%}]%{$reset_color%}"  #user
    PS1_STR="${PS1_STR}%{$fg_bold[magenta]%}[%{$reset_color%}%{$fg_bold[cyan]%}%1~%{$reset_color%}%{$fg_bold[magenta]%}]%{$reset_color%}" #folder
    PS1_STR="${PS1_STR}${vcs_info_msg_0_}\$ "                                                                                             #branch/end
}   

export PS1='${PS1_STR}'

...
    
por Not Available 24.05.2011 / 00:47

0 respostas

Tags