添加换行符给Oh My ZSH主题

And*_*ell 10 zsh oh-my-zsh

我正在尝试为我现有的Oh My ZSH主题添加换行符,但无法确定要添加的内容或应添加/更改的位置.有任何想法吗?

gvs*_*ins 40

我其实是在寻找相同的答案.但我的需求更加具体,因为我只想在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 ?";
}
Run Code Online (Sandbox Code Playgroud)

希望它能帮助您了解如何自定义您选择的主题.

  • 非常好的工作.正是我在寻找的东西.谢谢! (5认同)
  • 似乎我在使其正常工作时遇到了问题,并相信将此覆盖移至“source $ZSH/oh-my-zsh.sh”修复后。 (3认同)

Muh*_*eda 12

这个怎么样

NEWLINE=$'\n'
PROMPT='%n ${NEWLINE} $ '
Run Code Online (Sandbox Code Playgroud)


小智 5

我认为改变提示的正确位置是在主题本身。在我的系统上,它在~/.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=''
}
Run Code Online (Sandbox Code Playgroud)

  • 当您直接更改主题时,更新时您将丢失配置。 (2认同)
  • 尽管我会坚持使用“覆盖`.zshrc`”方法。提醒人们查看原始主题文件,了解如何实现“prompt_end”并知道要覆盖哪些内容以及在何处附加,这仍然非常有帮助。谢谢! (2认同)

Fel*_*bek 5

这是我的版本,它的工作原理与其他版本一样,但重复上一行的最后一个符号,以便它模仿 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=''
}
Run Code Online (Sandbox Code Playgroud)

注意:如果您不想修改库的源代码,您也可以将此函数放在~/.zshrc接近末尾的文件中。然后它将在库提供的函数上使用。

在此处输入图片说明