- 書式
- set_color [OPTIONS] VALUE
目次
概要
set_color
コマンドは、
端末のテキストの装飾
(色やボールド・アンダーライン)を
設定するために使われます。
訳注:実際はユーザが直接
set_color
を使わなくても
fish_config によるWebインターフェースから
選択すれば間に合います。
VALUE
は red
といった予約色名や、
3文字または6文字の16進数で
与えられるRGB値です。
bright
などのような br*
形式は
多くの端末での8種類の
標準的な明度の色の変種です。
brblack
は
black
よりも明度が高く、
gray
寄りです。
特別なキーワード normal
は
テキストの装飾を端末のデフォルトに戻します。
以下の予約色名があります。
- black
- red
- green
- yellow
- blue
- magenta
- cyan
- white
- brblack
- brred
- brgreen
- bryellow
- brblue
- brmagenta
- brcyan
- brwhite
3・6文字のRGB値
(たとえば A0FF33
や f2f
)
も使えます。
サポートされている色のうち、
指定されたRGB値に最も近い色を
fishは使います。
3文字のRGB値は
それぞれの値を2回繰り返した
RGB値に等しいです。
たとえば、
set_color 2BC
は
set_color 22BBCC
と等価です。
RGB値は
小文字でも大文字でも
受け付けます。
端末の機能に
(また set_color
が端末をサポートするレベルにも)
よりますので、
実際の色は
予約色名の近似値になるか、
何の効果もないことがあります。
2番目の色は
予備として使われます。
たとえば、
set_color 124212 brblue
は、
端末が正確にグレーの陰を表現できない場合は
brblue
を使うことを
set_color
に命じます。
予備色の設定は
8色・16色の端末が
指定された色を使えない場合に
とても便利です。
オプション
-b
,--background COLOR
- 背景色を設定。
-c
,--print-colors
- 16の予約色名を表示。
-o
,--bold
- ボールドにする。
-u
,--underline
- アンダーラインにする。
色名に normal
使うことで、
以下の装飾をデフォルトに戻します。
- 文字色
- 背景色
- ボールド
- アンダーライン
注意
normal
キーワードは
背景色と文字色を
端末のデフォルト(何であっても)に戻す。-
背景色の設定は
今後描画される文字のみ影響する。
fishは端末ウィンドウ全体の
背景色を設定することはできない。
ウィンドウの背景色
(不透明度などの他の属性も)
の設定は、
端末が提供する
どのようなメカニズムを使用しても
完了している必要がある。
- 端末の中には、
文字を太くする代わりに
明度を高くするために
--bold
エスケープシーケンスを
使うものもある。 -
set_color
は標準出力に
特定の文字列を出力することで
行われる。
コマンド置換 や パイプライン の
中で使われたのならば、
装飾用の文字列も取得される。
これは望まれることもあれば
望まれないこともある。
set_color
を使う前に
isattystdout
の
終了ステータス を確認することは、
スクリプトで色付きの出力をしない
決断をするのに役立つ。
実行例
# 赤文字 $ set_color red; echo 'Roses are red' # 青文字 $ set_color blue; echo 'Violets are blue' # ダークパープル文字 $ set_color 62A; echo 'Eggplants are dark purple' # デフォルトに戻す $ set_color normal; echo 'Normal is nice'
端末の能力を検出する
fishは端末が256色対応か、
古い16色対応でしかないかを、
ヒューリスティックな方法で
決定しています。
強制的に256色対応にするには
set fish_term256 1
を実行します。
環境変数 TERM
が
256color
という文字列を含む
(たとえば xterm-256color
)ならば、
256色対応が有効になります。
(Mac OSは除きます。
TERM_PROGRAM
と TERM_PROGRAM_VERSION
が
Mac OS 10.6からのTerminal.appを
検出するために使われます。
この場合、256色非対応になります。
なぜなら、16色対応のxtermだからです。)
terminfoで端末が256色対応
であるとわかった場合、
256色対応は常に有効になります。
カラーパレット問題をデバッグするには、
端末のterminfoで使える色数を出力する
tput colors
が使えます。
fishを fish -d2
で起動したとき、
使っている色のモードを教えてくれる
診断メッセージを出力します。
以下のように、
多くの端末は24ビットカラー(True Color)の
エスケープシーケンスをサポートしています。
- 現在のxterm
- Gnome Terminal
- Konsole
- iTerm2
fishはシステムのconfig.fish
(/usr/share/fish/config.fish
) 内で
多くの方法を使って
これらの端末を検出しようと試みます。
明示的にサポートさせるには
set fish_term24bit 1
を実行してください。
set_color
コマンドは
いかなる端末を使っていても、
どのように端末色を変更するのかを探すために
terminfoデータベースを使います。
古くて不完全な
terminfoデータベースしかなくて、
terminfoをサポートする端末のための
色の情報を欠落している
システムもあります。
terminfoの定義から
16色未満がサポートされていないとわかった場合、
fishはすべての端末が
ANSI X3.64エスケープシーケンス@Wikipedia を
使えると仮定します。
最後までお読みいただき、ありがとうございました。参考になれば嬉しいです。