2012-11-24 3 views
7

Ich wollte mein eigenes Oh My Zsh-Thema früher machen. Alles ist gut, außer wenn ich lange Zeilen in die Eingabeaufforderung eintippe (länger als die unten angezeigte Zeile), verschwindet die Zeile. Die Linie wird jedoch wieder angezeigt, wenn ich die Größe des Fensters ändere.Benutzerdefiniert Oh My Zsh Thema: Lange Eingabeaufforderungen verschwinden/abgeschnitten

Gibt es etwas in meinem Thema, das dies verursacht?

Wenn ich ein zusätzliches Zeichen eingeben und dann ein löschen, wird der Cursor am Rand des Fensters.

Sie können view the code for the theme here. Hier ist das Bit Ich denke, wir befassen sich mit:

# 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} ' 

Antwort

11

übrigens Ihr Link ist gebrochen, Hervorhebung eines der Probleme, mit einem Link zu Entsendung Code anstelle des Codes selbst - alle zukünftigen Betrachter Ihrer Frage kann nicht erhalten ein vollständiges Bild.

Ich denke, Ihr Problem ist, dass die ‚Farbe‘ Zeichen, die Sie verwenden sollen, in einem Paar %{...%} entwertet werden:

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

Arbeiten mit dem neuesten commit on github, sehe ich dieses Problem nicht - haben Sie es zu beheben ? Ich sehe jedoch einige Probleme mit der Cursorplatzierung und Linienzeichnung, insbesondere mit TAB. Wenn TAB drücken, wird der Cursor eine Zeile nach oben verschoben:

enter image description here Gepresste TAB hier. enter image description here gepresst TAB hier. enter image description here

Die PROMPT wird jedes Mal um eine Zeile nach oben gezogen. Dies wird durch das Einkapseln des Farbcodes fixiert innerhalb der %{...%}:

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

Ich bin nicht 100% sicher, ohne die ursprünglichen ~/.zshrc, aber dies sollte Ihre prompte ein wenig zu verbessern. :)

Neben der Orange, können Sie auch eine terminalbasierte verwenden Solarized Profil und die zshcolors, die könnte mehr tragbar sein. Ich konnte jedoch die Orange nicht ohne tput richtig bekommen.

#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

Muss ich auch anderen Variablen entkommen, oder sind es nur die Farben? Zum Beispiel Alias ​​die Farben zu anderen Variablen wie: 'style_path =" $ {RESET} $ {SOLAR_GREEN} "' –

+0

@OliverJosephAsh Vorausgesetzt, es ist * irgendwo entkommen *, du bist gut - ich entkam zum frühestmöglichen Zeitpunkt ('SOLAR_ '), so dass 'style_path' zu' "% {$ (tput sgr0)%}% {$ {tput setaf 64%}" 'erweitert wird, wobei beide Variablen bereits geflohen sind - die 'höheren' Variablen sind nicht ' t * weh *, aber ich glaube nicht, dass es einen Vorteil gibt :) – simont