shell - 自定义 Oh My Zsh 主题 : long prompts disappear/cut off

标签 shell themes zsh prompt

早些时候我尝试制作自己的 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 时, 光标上移一行:

enter image description here
在此处按下 TAB。
enter image description here
在此处按下 TAB。
enter image description here
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/

相关文章:

linux - 有效地合并慢速存储上具有大量内容的两个目录

terminal - 基于 2 个参数的 Zsh 自动完成功能

bash - Sed 仅打印至少包含 2 个单词的行

linux - Shell 脚本错误处理

android - 如何在 android 中实现移动主题应用程序

silverlight - 从外部资源设置 Silverlight 应用程序的配色方案

shell - 在 Zsh 中缩短我的提示

zsh - 在 ZSH 中设置环境变量给出了预期的数字

linux - linux下如何删除除上周以外的日志文件

html - RichFaces 页面主题——包含 CSS 文件?