Wo befinden sich die Eingabeaufforderungsvoreinstellungen von zsh?

Wo befinden sich die Eingabeaufforderungsvoreinstellungen von zsh?

Ich möchte meine eigene Eingabeaufforderung erstellen, aber ausgehend von einer der Voreinstellungen, die hier erhältlich sind prompt -l. Ich würde gerne wissen, wo sie definiert sind, damit ich eine duplizieren und aufmotzen kann.

Außerdem wäre es schön zu wissen, wie man die neue Eingabeaufforderung als Auswahl in der Liste verfügbar macht, anstatt prompt -lsie nur in .zshrc zu definieren, damit sie mit Communities geteilt werden kann.

ps: nein, ich möchte oh-my-zsh nicht verwenden

Antwort1

Dieser promptBefehl ist in zsh enthalten und ist dokumentiert imHandbuch. Leider fehlt es in derFunktionenindex, aber Sie können es mit einer Volltextsuche finden: man zshallSuchen Sie dann nach ^ *prompt(dem Wort „prompt“ am Anfang einer Zeile) oder, um weniger irrelevante Treffer zu erhalten, ^ *prompt [^ a-z](schließen Sie Stellen aus, an denen ein anderes Wort folgt). Es ist Teil derEingabeaufforderung Themen Benutzerbeitrag.

Das Handbuch erklärt, wie manSchreiben Sie Ihr eigenes Prompt-Thema. Ein Prompt-Design wird durch eine Setup-Funktion definiert, die dem Benennungsmuster entspricht und automatisch geladen werden muss. Der Code des Prompt-Designs unterstützt offiziell nicht die dynamische Registrierung eines Prompt-Designs, aber wenn man sich den Quellcode ansieht, kann man dies tun, indem man den Namen der Setup-Funktion (die dem Benennungsmuster entsprechen muss) nach dem Ausführen zum Array hinzufügt .prompt_name_setupprompt_themespromptinit

Um zu sehen, wo sich die verfügbaren Eingabeaufforderungsthemen befinden, schauen Sie nach, woher die prompt_*_setupFunktionen geladen werden:

echo $^fpath/prompt_*_setup(N)

Dabei handelt es sich jeweils um eine Funktionsdefinition, die Sie nachlesen können.

Antwort2

% 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
%

verwandte Informationen