向 Oh My ZSH 主题添加换行符

Add newline to Oh My ZSH Theme

我正在尝试向我现有的 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=''
}

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

这个怎么样

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