zsh 的提示预设位于哪里?

zsh 的提示预设位于哪里?

我想创建自己的提示,但从可以从 获得的预设之一开始prompt -l。我想知道它们是在哪里定义的,这样我就可以复制一个并对其进行修改。

prompt -l另外,如果知道如何使新提示作为列表中的选项提供,而不是仅仅在 .zshrc 中定义它,以便与社区共享,那就太好了。

ps:不,我不想使用 oh-my-zsh

答案1

prompt命令随 zsh 一起提供,并记录在手动的。不幸的是它从功能索引,但您可以通过全文搜索找到它:man zshall然后搜索^ *prompt(行首的“提示”一词),或者,为了减少不相关的命中,^ *prompt [^ a-z](排除后面跟着另一个单词的地方)。它是的一部分提示主题用户贡献

该手册解释了如何编写您自己的提示主题。提示主题由与必须自动加载的命名模式匹配的设置函数定义。提示主题代码并不正式支持动态注册提示主题,但查看源代码,您可以通过在运行后将设置函数的名称(必须与命名模式匹配)添加到数组来实现。prompt_name_setupprompt_themespromptinit

要查看可用的提示主题在哪里,请查看prompt_*_setup函数从哪里加载:

echo $^fpath/prompt_*_setup(N)

其中每一个都是一个函数定义,您可以去阅读。

答案2

% autoload -Uz promptinit && promptinit  # Initialize the prompt system
% prompt -p                              # Preview the included prompts
...
% # Get the source file of a particular prompt:
% zmodload zsh/parameter
% print $functions_source[prompt_fade_setup]
/usr/share/zsh/5.8/functions/prompt_fade_setup
%

相关内容