
たぶん私はあまり考え始めたが、適切な説明が見つからない。私は最近、「ヒント」の外観と使用される色だけでなく、テキスト全体で色が使用される「場所」を変更するいくつかのテーマが付属しているoh-my-zshをインストールしました。
私が正しく理解したなら、赤、緑、青などのようないくつかの「基本」色があります。その後、ターゲットは「ねえ、私は青が欲しいのですが、具体的な青はこの16進値でなければなりません」と言えます。
人々が使用している端末エミュレータでもテーマを適用できる理由は何ですか?私はHyperJSを使用しており、すべての色を担当しているように見えるテーマを適用できますが、プロンプトレイアウトはまだoh-my-zshで設定されています。
oh-my-zshで使用するテーマと端末テーマの違いは何ですか?被験者が何をしているかなど、詳細を説明していただけますか?
答え1
Oh-my-zshはデフォルトで基本的な操作を行います。promptinit
zshはすでにこれを行っています。彼らはトピックファイルを調達して少し違うようにしています。基本的なアイデアは、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テーマが完全に異なると同じではありません。