starship/docs/ja-JP/advanced-config/README.md

5.2 KiB
Raw Blame History

高度な設定

Starship は汎用性の高いシェルですが、時には特定の処理を行うために starship.toml を編集する以上のことをする必要があります。 このページでは starship で使用される、より高度な設定の一部を詳しく説明していきます。

::: warning

ここに載せられた設定は、Starship の将来のリリースで変更される可能性があります。

:::

Bashのカスタムの事前プロンプトおよび事前実行コマンド

Bashには、他のほとんどのシェルとは違い、正式な preexec / precmd フレームワークを持っていません。 そのため、 bashで完全にカスタマイズ可能なフックを提供することは困難です。 ただし、Starship はプロンプトを描画する一連の流れに、限定的に独自の関数を挿入することができます。

  • 関数をプロンプトが描画される直前に実行するためには、新しい関数を定義して starship_precmd_user_func に割り当ててください。 例として、ロケットをプロンプトの前に表示させたければ、下記のようにしてください。
function blastoff(){
    echo "🚀"
}
starship_precmd_user_func="blastoff"
  • To run a custom function right before a command runs, you can use the DEBUG trap mechanism. しかし、Starship を初期化する前に DEBUG シグナルをトラップしなければいけません Starship は DEBUGトラップの値を保護できますが、 starship の起動後にトラップが上書きされると、いくつかの機能は壊れてしまうでしょう。
function blastoff(){
    echo "🚀"
}
trap blastoff DEBUG     # starshipを起動する前にDEBUGをトラップする
eval $(starship init bash)

ウィンドウのタイトルの変更

Some shell prompts will automatically change the window title for you (e.g. to reflect your working directory). 特に Fish はデフォルトで変更を行います。 Starship はこれをしませんが、この機能を bashzsh に追加することは簡単にできます。

まず、ウィンドウのタイトルを変更する関数を定義してください( bash も zsh も同様に)

function set_win_title(){
    echo -ne "\033]0; YOUR_WINDOW_TITLE_HERE \007"
}

タイトルをカスタマイズするために変数を利用することができます ($USER$HOSTNAME$PWD が一般的です)。

bash では関数を starship の precmd 関数としてセットしてください。

starship_precmd_user_func="set_win_title"

zshでは関数を precmd_functions の配列に追加してください。

precmd_functions+=(set_win_title)

If you like the result, add these lines to your shell configuration file (~/.bashrc or ~/.zshrc) to make it permanent.

たとえば、現在のディレクトリをターミナルタブのタイトルに表示したい場合は、 ~/.bashrcまたは~/.zshrcに以下のスニペットを追加します。

function set_win_title(){
    echo -ne "\033]0; $(basename "$PWD") \007"
}
starship_precmd_user_func="set_win_title"

スタイルの設定

スタイル文字列は空白で区切られた単語のリストです。 大文字小文字を区別しません(例えば、 boldBoLd は同じだとみなされます)。 それぞれ以下のいずれか一つが該当します。

  • bold
  • underline
  • dimmed
  • inverted
  • bg:<color>
  • fg:<color>
  • <color>
  • none

ここで、 <color> は色を指定します(以下で述べます)。 fg:<color> and <color> currently do the same thing, though this may change in the future. inverted swaps the background and foreground colors. The order of words in the string does not matter.

none トークンは、文字列中のbg: 指定子の一部でない場合、他のすべてのトークンをオーバーライドします。そのため、たとえば、fg:red none fg:blue と指定した場合、スタイルなしの文字列が作られます。 bg:none sets the background to the default color so fg:red bg:none is equivalent to red or fg:red and bg:green fg:red bg:none is also equivalent to fg:red or red. 将来 none を他の単語と一緒に使用することはエラーになるかもしれません。

色は以下のいずれか1つを指定できます。

  • 標準的なターミナルカラーの blackredgreenblueyellowpurplecyanwhite。 必要に応じて、より明るい色を得るために bright- を前につけることができます。(例えば、 bright-white
  • # に続く16進数。 RGB の16進数カラーコードを表します。
  • 0-255 までの間の数字。 8-bit ANSI カラーコード を表します。

複数の色が文字色/背景色に指定された際には、最後の指定が優先して選ばれます。