我试图在现有的Oh My ZSH主题中添加换行符,但无法弄清楚应该添加或更改什么。 有任何想法吗?
我其实在寻找同样的答案。但我的需求有点更具体,因为我只想在我现在使用的agnoster主题中添加一个换行符。
在我的研究中,我发现了很多已经做到这一点的分叉主题,但我认为这对于仅添加新行来说是一种过度解决方案。
所以我阅读了agnoster
代码,并想出了这个简单的解决方案,即在我的.zshrc
文件中覆盖prompt_end()
函数。
要这样做,只需在您的.zshrc
文件中添加以下代码:
prompt_end() {
if [[ -n $CURRENT_BG ]]; then
print -n "%{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR"
else
print -n "%{%k%}"
fi
print -n "%{%f%}"
CURRENT_BG=''
#Adds the new line and ➜ as the start character.
printf "\n ➜";
}
希望这能帮助你了解如何自定义所选主题。我认为更改提示符的适当位置是在主题本身中。在我的系统上,它位于~/.oh-my-zsh/themes/agnoster.zsh-theme
中。我在那里添加了一个\n➜
:
找到这个部分:
# End the prompt, closing any open segments
prompt_end() {
if [[ -n $CURRENT_BG ]]; then
echo -n " %
{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR"
else
echo -n "%{%k%}"
fi
echo -n "\n➜%{%f%}"
CURRENT_BG=''
}
.zshrc
中覆盖”的方法。但提醒人们去查看原始主题文件,学习prompt_end
的实现方式并知道要覆盖哪些内容以及在哪里附加仍然非常有帮助。谢谢! - Escape0707这个怎么样?
NEWLINE=$'\n'
PROMPT='%n ${NEWLINE} $ '
这是我的版本,与其他版本一样工作,但是会重复上一行的最后一个符号,以模仿agnoster给你的确切提示:
prompt_end() {
if [[ -n $CURRENT_BG ]]; then
echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR"
else
echo -n "%{%k%}"
fi
echo -n "\n%{%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{%f%}"
CURRENT_BG=''
}
~/.zshrc
文件中靠近末尾。然后它将被用于库提供的函数之上。
如果您不想更新您的agnoster主题,因为它将被更新覆盖,您可以创建一个新的主题并将其放置在~/.oh-my-zsh/custom
目录下。 "custom"目录被git排除。
如果你正在使用PROMPT
并向其中追加内容,就像在senpai主题中一样,只需执行以下操作:
if [[ $SENPAI_SHOW_K8S == true ]]; then
PROMPT+="\$(k8s_info)
${yellow} —————» %f"
fi
然后你会得到一个多行提示:
[19:28:02] ~ ⎈:default-demo2-gke
—————» ns:default ❯ ls /etc
简体中文:
PROMPT='multi
line
prompt'