自定义哦我的Zsh主题:长提示消失/切断

8 shell themes zsh prompt

我早些时候制作了自己的Oh My Zsh主题.一切都很好,除非我在提示符中输入长行(任何长于下面的行),该行消失.但是,如果我调整窗口大小,则会重新显示该行.

我的主题中有什么东西会导致这种情况发生吗?

如果我键入一个附加字符然后删除一个字符,光标将出现在窗口的边缘.

您可以在此处查看主题的代码.以下是我认为我们关注的一点:

# 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} '
Run Code Online (Sandbox Code Playgroud)

sim*_*ont 12

顺便提一下,您的链接已被破坏,突出显示发布代码链接而不是代码本身的问题之一 - 您的问题的任何未来的观看者都无法全面了解.

我认为你的问题是你使用的'颜色'字符应该在一对中转义%{...%}:

%{...%}
Include  a string as a literal escape sequence.  The string within the braces
should not change the cursor position.  Brace pairs can nest.
Run Code Online (Sandbox Code Playgroud)

在github上使用你最新的提交,我没有看到这个问题 - 你修复了吗?但是,我发现光标放置和线条绘制存在一些问题,尤其是TAB.按下时TAB,光标向上移动一行:

在此输入图像描述TAB在这里. 在此输入图像描述TAB在这里. 在此输入图像描述

PROMPT被重新绘制"向上"一行每次.通过将颜色代码封装在以下内容中来解决此问题%{...%}:

# 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)%}"
Run Code Online (Sandbox Code Playgroud)

我没有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]%}"
Run Code Online (Sandbox Code Playgroud)