ZSH RPROMPT странный интервал?
Вот моя подсказка ZSH
function git_prompt_info() {
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
echo "$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$ZSH_THEME_GIT_PROMPT_SUFFIX"
}
PROMPT='$fg[yellow]%}⚡︎ $fg[cyan]%~ $(git_prompt_info)
%{$reset_color%}→ '
ZSH_THEME_GIT_PROMPT_PREFIX="[git:"
ZSH_THEME_GIT_PROMPT_SUFFIX="]$reset_color"
ZSH_THEME_GIT_PROMPT_DIRTY="$fg[red]+"
ZSH_THEME_GIT_PROMPT_CLEAN="$fg[green]"
RPROMPT='%T'
Который выглядит
Когда я двигаю $(git_prompt_info)
в RPROMPT
function git_prompt_info() {
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
echo "$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$ZSH_THEME_GIT_PROMPT_SUFFIX"
}
PROMPT='%T $fg[yellow]%}⚡︎ $fg[cyan]%~
%{$reset_color%}→ '
ZSH_THEME_GIT_PROMPT_PREFIX="[git:"
ZSH_THEME_GIT_PROMPT_SUFFIX="]$reset_color"
ZSH_THEME_GIT_PROMPT_DIRTY="$fg[red]+"
ZSH_THEME_GIT_PROMPT_CLEAN="$fg[green]"
RPROMPT='$(git_prompt_info)'
это выглядит как
Видите расстояние справа? Также стрелка начинается не в том месте?
Как я могу это исправить?
1 ответ
Я верю $fg[color]
содержит что-то вроде \e[32m
? Если так, это должно быть включено в %{…%}
чтобы указать, что эта последовательность не имеет ширины. Но гораздо лучше, если вы забудете обо всем этом и используете %F{color}
для переднего плана, %K{color}
для фона и %f
/%k
отменить их вместо $reset_color
, Ты должен сделать
setopt promptsubst
setopt promptpercent
для того, чтобы это работало (у вас, вероятно, уже есть это).
Этот промежуток - это ширина цветов, и они являются причиной, по которой у вас неправильная позиция курсора. Проблема здесь в том, что zsh не может запросить терминал с вопросом "Эй, я вывел некоторый текст, какова его ширина?" Вместо того, чтобы вычислять ширину самостоятельно.