Yuki猫のおうち

気ままに自由に日々を生きるエンジニアのブログ

powerlevel10k でディレクトリ名やブランチ名を短縮しないで表示するための設定

はじめに

powerlevel10k使っていますか?

エンジニアの皆さんなら、ぼくの考えた最強のターミナルにレイアウトを変更していますよね?

私も例に漏れず、 powerlevel10k を使ってターミナルの表示をリッチに装飾しています。

github.com

お気に入りのおしゃれターミナル

ただ、p10k configure を実行しただけのデフォルトの設定だとディレクトリ名やブランチ名が一定以上の長さになると短縮表示になってしまい、例えばブランチ名を他人に共有する際などにそのままコピペできずに少し面倒でした。

そこで、短縮をしている処理をOFFにする機能がどこかにあるのではないか、と思って調査して設定してみました。

今回は、その方法を紹介しようと思います。

設定

powerlevel10kの設定は ~/.p10k.zsh に記述してあり、p10k configure で設定した項目もここに記載されています。

今回は、このファイルを修正することで設定を変更していきます。

ディレクトリ名を短縮しないようにする

ディレクトリを表示している部分の短縮に関わる数値として、ディレクトリ部分の文字長を指定している箇所が以下の POWERLEVEL9K_DIR_MAX_LENGTH です。

  # Shorten directory if it's longer than this even if there is space for it. The value can
  # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty,
  # directory will be shortened only when prompt doesn't fit or when other parameters demand it
  # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below).
  # If set to `0`, directory will always be shortened to its minimum length.
  typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80

コメントに記載がある通り、何文字まで短縮せずに表示するか、の値を

  • 文字列の長さを数値で指定
  • ターミナルウインドウの幅に対する比率を%で指定

の2種類の方法で設定することができます。

また、それとは別にもう一つ、空を設定することができるようです。

空を設定した場合は「他の表示項目の表示も含めて表示幅が足りなくなったときのみ短縮する」という設定になります。

今回は空を設定することにします。 設定は以下のように変更します。

  # Shorten directory if it's longer than this even if there is space for it. The value can
  # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty,
  # directory will be shortened only when prompt doesn't fit or when other parameters demand it
  # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below).
  # If set to `0`, directory will always be shortened to its minimum length.
- typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80
+ typeset -g POWERLEVEL9K_DIR_MAX_LENGTH= # default is 80 

ブランチ名を短縮しないようにする

ブランチ名の短縮に関連する処理は、以下の部分です。

    if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then
      local branch=${(V)VCS_STATUS_LOCAL_BRANCH}
      # If local branch name is at most 32 characters long, show it in full.
      # Otherwise show the first 12 … the last 12.
      # Tip: To always show local branch name in full without truncation, delete the next line.
      (( $#branch > 32 )) && branch[13,-13]="…"  # <-- this line
      res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}"
    fi

コメントがとても親切で『ローカルブランチを短縮せずに常に全て表示したい場合、次の行を削除してください。 <- 次の行はこちら』と書かれています。

コメントの通り、設定は以下のように変更します。

    if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then
      local branch=${(V)VCS_STATUS_LOCAL_BRANCH}
      # If local branch name is at most 32 characters long, show it in full.
      # Otherwise show the first 12 … the last 12.
      # Tip: To always show local branch name in full without truncation, delete the next line.
-     (( $#branch > 32 )) && branch[13,-13]="…"  # <-- this line
+     # (( $#branch > 32 )) && branch[13,-13]="…"  # <-- this line
      res+="${clean}${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}${branch//\%/%%}"
    fi

反映させる

ここまで完了したら、ターミナルを再起動してこのファイルを適用しましょう。

あるいは、以下のコマンドで変更を現在開いているターミナルに適用することもできます。

$ source ~/.p10k.zsh

表示を確認してみる

長いディレクトリに移動しても、表示範囲が許されるかぎりそのまま表示されています。

横幅に余裕があるのでディレクトリのパスが省略されずに表示されている

次に、同じディレクトリのままとても長い名前をつけたブランチを切ってどう変化するかを確認してみます。

ブランチ名は省略されず、ディレクトリのパスが必要に応じて省略されている

ブランチ名は省略されずに全て表示されていて、ディレクトリ名が省略されていますね。

ちなみに、ターミナルのウインドウ幅を広げてあげると、ディレクトリ名も全て表示されるようになります。

ターミナルのウインドウ幅を広げるとディレクトリのパスも全て表示される

いい感じですね!

まとめ

今回は powerlevel10k でディレクトリパスとブランチ名をいい感じに短縮しないで表示する設定方法を紹介してみました。

初めて ~/.p10k.zsh の中身を見たのですが、今回修正した項目以外にもたくさんの細かい設定をカスタマイズできることがわかったので、暇を見てどんな設定ができるのか確認してみたいなと思います。