2012-11-24 6 views
7

私のZshのテーマを先に作っていました。プロンプトに長い行を入力した場合を除いて(下の行より長い行を除く)、行は消えます。ただし、ウィンドウのサイズを変更すると、そのラインが再表示されます。カスタムOh My Zshのテーマ:長いプロンプトが消えたり消えたりする

私のテーマには、これが起こる原因がありますか?

私は、追加の文字を入力してから1を消去すると、カーソルが画面の端に表示されます。

あなたはview the code for the theme hereをすることができます。あなたの質問のいずれかの将来の視聴者が取得することはできません -

ちなみに
# 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} ' 

答えて

11

、あなたのリンクではなく、コード自体のコードへのリンクを掲載して課題の一つを強調し、壊れている:ここで私は、我々が関係していると思うビットです完全な画像。

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

commit on github最新のを使用して
%{...%} 
Include a string as a literal escape sequence. The string within the braces 
should not change the cursor position. Brace pairs can nest. 

、私はこの問題を見ていない - あなたはそれを修正しました?しかし、私は、カーソルの配置と線描画に関するいくつかの問題、特にTABを見ています。ここ

enter image description here プレスTABTABを押すと、カーソルが1行上に移動させられます。 enter image description here が押されたTABここにあります。 enter image description here

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)%}" 

私は元~/.zshrcせずに100%わからないんだけど、これはあなたのプロンプトを少し改善する必要があります。 :)

別にオレンジ色から、あなたもよりポータブルであるかもしれない端末ベースのSolarizedプロファイルとzshcolorsを、使用することができます。私は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]%}" 
+0

他の変数もエスケープする必要がありますか、それとも色だけですか?例えば、私は色を次のような別の変数にエイリアスします: 'style_path =" $ {RESET} $ {SOLAR_GREEN} "' –

+0

@OliverJosephAshそれはエスケープされています*どこか*、あなたは良いです - 私はできるだけ早くエスケープしました'SOLAR_')、 'style_path'は既に両方の変数がエスケープされているので、'%{$ {tput sgr0}%}%{$ {tput setaf 64%} ''に展開されます。 t *傷つける*、しかし私はそこに利点があるとは思わない:) – simont