9

これが私の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)'

のように見える

ここに画像の説明を入力

右側の間隔が見えますか? また、矢印は間違った場所から始まりますか?

どうすればこれを修正できますか?

4

1 に答える 1

13

$fg[color]は次のようなものが含まれていると思い\e[32mますか?%{…%}その場合、このシーケンスに幅がないことを示すために、で囲む必要があります。しかし、すべてを忘れて、%F{color}フォアグラウンド、%K{color}バックグラウンド、および%f/%kの代わりにそれらをキャンセルするために使用する場合は、はるかに優れています$reset_color。あなたがしなければならない

setopt promptsubst
setopt promptpercent

これが機能するために(あなたはおそらくすでにこれを持っています)。

そのギャップが色の幅であり、カーソル位置が間違っている理由です。ここでの問題は、zshが「テキストを出力しました。その幅はどれくらいですか?」という質問で端末にクエリを実行できないことです。代わりに、独自に幅を計算する必要があります。

于 2012-12-27T18:17:32.497 に答える