fishのプロンプトを変更する3種類の方法

fishをインストールしたら最初にカスタマイズしたくなるのがプロンプトですよね。

fishのプロンプトを変更するに

  1. ブラウザで設定する
  2. コマンドラインから設定する
  3. エディタで設定する

の3種類の方法があります。

ブラウザでfishのプロンプトを変更する

ブラウザで設定を選べるので分かりやすい方法です。

foo@bar ~> fish_config

とするとブラウザにfishの設定画面が開きます。

上のタブから「Prompt」でプロンプトのサンプルを表示させ、好きなデザインを選んだら「Set Prompt」を押せば反映されます。

押しても反応しないなら、いったん別のタブに切り替えてからPromptタブに戻るか、コマンドラインからもういちどfish_configをしてみてください。

ブラウザに表示されているデザインが

  1. 好みのデザインがない
  2. ブラウザから選んだデザイを少しだけ手直ししたい

場合は、後で説明するように設定ファイルを直接開いて修正できます。

コマンドラインからfishのプロンプトを変更する

ターミナルのコマンドラインから、

foo@bar~> function fish_prompt
            echo "hogehoge> "
end
hogehoge>

のようにプロンプトが変更されます。

ホスト名やカレントディレクトリを表示するには

  • prompt_hostname:ホスト名
  • prompt_pwd:カレントディレクトリ名
  • $USER:環境変数のユーザ名

を使います。

> function fish_prompt
          printf '%s@%s %s > ' $USER (prompt_hostname) (prompt_pwd)
  end
foo@bar ~ >

この設定はいまのfishが終了すれば残りません。

コマンドラインから定義した設定をを永続させるには「funcsave」を使います。

foo@bar > funcsave fish_prompt

とします。

エディタでfishのプロンプトを変更する

ブラウザやコマンドラインで変更された設定は

.config/fish/functions/fish_prompt.fish

にあります。

fishインストールした直後はこのファイルはないので、新規に作成しましょう。

fish_configによって生成されたファイルは行数が長いので複雑に見えます。

前半の行は場合分けなどに行数を取られているので、無視しましょう。

プロンプトのデザインは最後のほうにあります。

たとえば、

foo@bar~/foo $

の「$」前のスペースを取り除くなら

fish_prompt.fishの84行目あたりの

printf '%s ' (__fish_vcs_prompt)

の%sの後のスペースを除けばいいので、

printf '%s' (__fish_vcs_prompt)

とするだけです。

 

「$」の後のスペースは

echo -n "$suffix "

の行のsuffixの後に出力されています。

 

わからなくなったら、fish_prompt.fishを削除してしまえば、デフォルトに戻ります。

あるいはコマンドラインから

fish_config

で選び直してから、ふたたびカスタマイズすれば簡単です。

 

コメント