ZSHテーマ、プロンプト、端末ベースのテーマの違いは何ですか?

ZSHテーマ、プロンプト、端末ベースのテーマの違いは何ですか?

たぶん私はあまり考え始めたが、適切な説明が見つからない。私は最近、「ヒント」の外観と使用される色だけでなく、テキスト全体で色が使用される「場所」を変更するいくつかのテーマが付属しているoh-my-zshをインストールしました。

私が正しく理解したなら、赤、緑、青などのようないくつかの「基本」色があります。その後、ターゲットは「ねえ、私は青が欲しいのですが、具体的な青はこの16進値でなければなりません」と言えます。

人々が使用している端末エミュレータでもテーマを適用できる理由は何ですか?私はHyperJSを使用しており、すべての色を担当しているように見えるテーマを適用できますが、プロンプトレイアウトはまだoh-my-zshで設定されています。

oh-my-zshで使用するテーマと端末テーマの違いは何ですか?被験者が何をしているかなど、詳細を説明していただけますか?

答え1

Oh-my-zshはデフォルトで基本的な操作を行います。promptinitzshはすでにこれを行っています。彼らはトピックファイルを調達して少し違うようにしています。基本的なアイデアは、PS1、PS2、PS3、PS4の値を変更することです。あなたの端末エミュレータは(私が知っている限り)これらの値を変更しません。たとえば、ターミナルエミュレータでフォントのデフォルトの色を赤に設定すると、$ reset_colorは赤になります。

ストックZSHインストールの上に独自のテーマを簡単に作成できます。たとえば、私は独自のストックzshテーマを持っています(ヒント):

~./.zsh/prompt/prompt_XXXXXXX_setup次の内容でファイルを生成できます。

prompt_XXXXXXX_setup() {
    autoload -Uz colors && colors
    # You now have access to:
    # $fg[red] etc
    # $bg[red] etc
    # and the bold variant: $bg_bold and $fg_bold
    # and the $reset_color
    PROMPT="$fg_bold[blue]My shiney$reset_color $bg_bold[green]prompt %(!.#.%) " # although the docs seem to prefer you using PS1
}

prompt_XXXXXXX_setup "$@"

今このプロンプトを有効にします。

zcompile ~/.zsh/prompt/prompt_XXXXXXX_setup # optional, but advised

# set this in your .zshrc and you will always have this as a prompt when using zsh
fpath=(~/.zsh/prompt $fpath)
autoload -Uz promptinit && promptinit && prompt XXXXXXX  

これでプロンプトを切り替えるprompt <name>か、プロンプトのリストを取得できますprompt -l。もっと複雑な設定が必要な場合は、こちらをご覧ください。zsh-プロンプト-電力線または私の設定。 ZSHドキュメントも参照してください。ここまたはソースコードプロンプトの初期化

答え2

色の端末サポートはさまざまな規格で指定されています。ECMA-48または、より多くの色を追加するより高い標準です。最近の端末は、ほとんど仮想ウィンドウではなく、仮想ウィンドウです。専用ハードウェアTERMシミュレートされた端末は通常、環境変数を設定することで変更できます。色をサポートしていない端末をエミュレートできます。、例えば。

最新の端末では、色が必要な場合は通常、以前のTERM=xterm-256color標準ではるかに少ない数の色しか指定して256色のサポートを有効にすることをお勧めします。様々な種類マニュアルに正確なコードが詳細に記載されています。色を生成するには手動で行うことができます。

% print "\033[31;5mDANGER DANGER WILL ROBINSON\033[0m"
...

ncurses移植性のために、通常、さまざまなカラーコードに特定のZSH構文などのライブラリを使用することをお勧めします。

% print -P '%F{red}DANGER%f'
...
% print -P '%F{red}DANGER%f' | hexdump -C
00000000  1b 5b 33 31 6d 44 41 4e  47 45 52 1b 5b 33 39 6d  |.[31mDANGER.[39m|
00000010  0a                                                |.|
00000011
% print "\033[31;5mxxx\033[0m" | hexdump -C
00000000  1b 5b 33 31 3b 35 6d 78  78 78 1b 5b 30 6d 0a     |.[31;5mxxx.[0m.|
0000000f

oh-my-zshが何をするのかは、上記のような任意のコードをまとめることです。これは(最終的に)\033[31m上記のコードに似たコードを生成し、端末で使用して表示します(または表示しません)。端末がこれらのコードを処理する方法は、端末によって異なります\033[31m(「前景色赤」)。これらの端末の色設定セットは、同じ名前を使用しても端末ソフトウェアでテーマと呼ぶことができます。 、これはoh-my-zshテーマが完全に異なると同じではありません。

関連情報