早些时候我尝试制作自己的 Oh My Zsh 主题。一切都很好,除了当我在提示中输入长行(比下面看到的行长)时,该行消失了。但是,如果我调整窗口大小,该行会重新出现。
我的主题中有什么东西导致了这种情况发生吗?
如果我输入一个额外的字符然后删除一个,光标会出现在窗口的边缘。
您可以 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} '
最佳答案
顺便说一句,您的链接已损坏,突出显示了发布代码链接而不是代码本身的问题之一 - 您问题的任何 future 查看者都无法全面了解。
我认为您的问题是您使用的“颜色”字符应该在一对 %{...%}
中转义:
%{...%}
Include a string as a literal escape sequence. The string within the braces
should not change the cursor position. Brace pairs can nest.
使用您最新的 commit on 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)%}"
如果没有原始文件,我不能 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]%}"
关于shell - 自定义 Oh My Zsh 主题 : long prompts disappear/cut off,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13546672/