我尝试在现有的Oh My ZSH主题中添加换行符,但无法确定要添加的内容或应添加/更改的位置。有什么想法吗?
答案 0 :(得分:26)
我实际上是在寻找相同的答案。但我的需求更加具体,因为我只想在agnoster主题中添加换行符,我现在正在使用它。
在我的研究中,我发现很多分叉的主题已经做到了,但我认为这只是一个过度的解决方案,只能添加新的一行。
因此,我阅读了agnoster
代码,并提出了覆盖prompt_end()
文件中.zshrc
函数的简单解决方案。
要做到这一点,只需在.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 ➜";
}
希望它可以帮助您了解如何自定义所选主题。
答案 1 :(得分:4)
这是我的版本,其工作方式与其他版本相同,但是重复了上一行的最后一个符号,以便模仿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
文件中。然后,它将在库提供的函数上使用。
答案 2 :(得分:1)
我认为更改提示的适当位置是主题本身。在我的系统上,它位于~/.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=''
}