9

以前、自分の Oh My Zsh テーマを作ってみました。プロンプトに長い行 (下に表示されている行よりも長い行) を入力した場合を除いて、すべて問題ありませんが、行は消えます。ただし、ウィンドウのサイズを変更すると、線が再表示されます。

私のテーマにこれを引き起こしているものはありますか?

追加の文字を入力してから 1 つ消去すると、ウィンドウの端にカーソルが表示されます。

テーマのコードはこちらで確認できます。これが私たちが懸念していると私が思うビットです:

# Build the prompt
PROMPT='
' # Newline
PROMPT+='${style_user}%n' # Username
PROMPT+='${style_chars}@' # @
PROMPT+='${style_host}%m' # Host
PROMPT+='${style_chars}: ' # :
PROMPT+='${style_path}%c ' # Working directory
PROMPT+='$(git_custom_status)' # Git details
PROMPT+='
' # Newline
PROMPT+='${style_chars}\$${RESET} '
4

1 に答える 1

16

ちなみに、あなたのリンクは壊れており、コード自体ではなくコードへのリンクを投稿する際の問題の 1 つが浮き彫りになっています。今後あなたの質問を見る人は全体像を把握できません。

あなたの問題は、使用する「色」文字を次のペアでエスケープする必要があることだと思います%{...%}

%{...%}
Include  a string as a literal escape sequence.  The string within the braces
should not change the cursor position.  Brace pairs can nest.

githubで最新のコミットを使用すると、この問題は表示されません。修正しましたか? ただし、カーソルの配置と線の描画、特にTAB. を押すTABと、カーソルが 1 行上に移動します。

ここに画像の説明を入力 ここを押しTABました。 ここに画像の説明を入力 ここを押しTABました。 ここに画像の説明を入力

PROMPT毎回 1 行ずつ「上」に再描画されています。これは、カラー コードを 内にカプセル化することで修正されます%{...%}

# Solarized Dark colour scheme
BOLD="%{$(tput bold)%}"
RESET="%{$(tput sgr0)%}"
SOLAR_YELLOW="%{$(tput setaf 136)%}"
SOLAR_ORANGE="%{$(tput setaf 166)%}"
SOLAR_RED="%{$(tput setaf 124)%}"
SOLAR_MAGENTA="%{$(tput setaf 125)%}"
SOLAR_VIOLET="%{$(tput setaf 61)%}"
SOLAR_BLUE="%{$(tput setaf 33)%}"
SOLAR_CYAN="%{$(tput setaf 37)%}"
SOLAR_GREEN="%{$(tput setaf 64)%}"
SOLAR_WHITE="%{$(tput setaf 254)%}"

元の がないと 100% 確信が持てません~/.zshrcが、これでプロンプトが少し改善されるはずです。:)

オレンジ色とは別に、端末ベースのSolarizedプロファイルとを使用することもできます。zsh colorsこれは、より移植性が高い可能性があります。しかし、私は なしではオレンジを正しく取得できませんでしたtput.

#autoload colors && colors
#SOLAR_YELLOW="%{$fg[yellow]%}"
#SOLAR_ORANGE="%{$(tput setaf 166)%}"
#SOLAR_RED="%{$fg[red]%}"
#SOLAR_MAGENTA="%{$fg[magenta]%}"
#SOLAR_VIOLET="%{$fg_bold[magenta]%}"
#SOLAR_BLUE="%{$fg[blue]%}"
#SOLAR_CYAN="%{$fg[cyan]%}"
#SOLAR_GREEN="%{$fg[green]%}"
#SOLAR_WHITE="%{$fg[white]%}"
于 2013-01-06T05:16:19.507 に答える