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
%

相關內容