向 Oh My ZSH 主题添加换行符

38

我试图在现有的Oh My ZSH主题中添加换行符,但无法弄清楚应该添加或更改什么。 有任何想法吗?

6个回答

107

我其实在寻找同样的答案。但我的需求有点更具体,因为我只想在我现在使用的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 ➜";
}
希望这能帮助你了解如何自定义所选主题。
以下是结果: enter image description here

11
非常好的工作。正是我在寻找的。谢谢! - rp.
当我这样做时,我的光标对齐会出问题 :/ 像是向左移动了一点。其他有相似问题的人吗? - emin
3
看起来我在让这个工作时遇到了问题,而将此覆盖移到“source $ZSH/oh-my-zsh.sh”之后似乎解决了它。 - Ethan Knowlton
干得好,谢谢。我一直在寻找这个。 - Wooz12345
这适用于默认的“robbyrussell”主题吗? - jcollum

17

我认为更改提示符的适当位置是在主题本身中。在我的系统上,它位于~/.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=''
}

Stackoverflow中的代码格式化器似乎很难使用。对于格式不良的代码,我感到抱歉。是否有代码格式化的限制? - Micheal Bee
3
直接更改主题会导致更新时丢失配置。 - gvsrepins
2
虽然我会坚持使用“在.zshrc中覆盖”的方法。但提醒人们去查看原始主题文件,学习prompt_end的实现方式并知道要覆盖哪些内容以及在哪里附加仍然非常有帮助。谢谢! - Escape0707

12

这个怎么样?

NEWLINE=$'\n'
PROMPT='%n ${NEWLINE} $ '

12

这是我的版本,与其他版本一样工作,但是会重复上一行的最后一个符号,以模仿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文件中靠近末尾。然后它将被用于库提供的函数之上。

enter image description here


0

如果您不想更新您的agnoster主题,因为它将被更新覆盖,您可以创建一个新的主题并将其放置在~/.oh-my-zsh/custom目录下。 "custom"目录被git排除。


0

如果你正在使用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'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接