9

我之前尝试过制作自己的 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} '
4

1 回答 1

16

顺便说一句,您的链接已损坏,突出显示了发布代码链接而不是代码本身的问题之一 - 您问题的任何未来查看者都无法全面了解。

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

%{...%}
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时,光标向上移动一行:

在此处输入图像描述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]%}"
于 2013-01-06T05:16:19.507 回答