lazygitをカスタマイズしてみた

lazygitは設定ファイルでカスタマイズできるため、試してみました。
2022.08.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

どうも。CX事業本部Delivery部のえーたん(@eetann092)です。

先日lazygitの最近お世話になり始めた機能を紹介 | DevelopersIOを書いている際に、lazygitに自作キーバインドを追加できることを知りました。 設定ファイルの紹介も兼ねて、カスタマイズの例を紹介します。

設定ファイルについての公式ドキュメント

lazygitの設定ファイルを配置する場所やデフォルト値、その他細かい説明についてはdocsディレクトリの中のファイルに書かれています。 また、Wikiにもカスタマイズの例が載っています。

言語を変えてみる

日本語表示にする設定は以下です。

config.yml

gui:
  language: 'ja'

韓国語表示にもしてみました。

config.yml

gui:
  language: 'ko'

アイコンを表示する

Nerd Fonts使用時に以下のように設定すれば、アイコンを表示できます。

config.yml

gui:
  showIcons: true

v0.35からサポートされたようです。

自作キーバインドを追加する

設定ファイルのcustomCommandsに書くことで自作のキーバインドを追加できます。

以下は、「untrackedファイルを含むstash」のキーバインドの設定例です。

config.yml

customCommands:
  - key: 'u'
    context: 'files'
    description: 'stash include untracked'
    command: 'git stash save --include-untracked "{{index .PromptResponses 0}}" '
    prompts:
      - type: 'input'
        title: 'Stash Message'
        initialValue: 'WIP'

まず、実際に上記のキーバインドを使用したときの表示をお見せします。

実行の流れは以下です。

  1. uキーを入力する
  2. プロンプトにstashメッセージを入力する(デフォルト値:WIP
  3. Enterを押すとgit stash save --include-untracked "入力したメッセージ"が実行される

いくつかに区切って説明します。

config.yml

customCommands:
  - key: 'u'

まず、最初の2行ではcustomCommandskeyでキーバインドを指定しています。 使用できるキーは、a,b,cのような一文字か公式ドキュメントに載っている組み合わせのいずれかです。

config.yml

    context: 'files'
    description: 'stash include untracked'

contextでは、どのパネルにキーバインドを設定するかを書きます。 指定できるcontextの一覧も公式ドキュメントに掲載されています。

descriptionは、xキーを入力したときのメニューに表示されます。

config.yml

    command: 'git stash save --include-untracked "{{index .PromptResponses 0}}" '

commandには、キーバインドを入力した時に実行してほしいコマンドを書きます。このとき、{{index .PromptResponses 0}}のようにプレースホルダーを指定することで、プロンプトで入力させた値を展開できます。

{{index .PromptResponses 0}}promptsで書かれた最初のプロンプトの値を展開する、という意味になります。

このプレースホルダーはGoのテンプレートと同じ書き方です。 .PromptResponsesのようなlazygitですでに用意されているプレースホルダーについては、公式ドキュメントで確認できます。

config.yml

    prompts:
      - type: 'input'
        title: 'Stash Message'
        initialValue: 'WIP'

最後にprompotsにプロンプトの内容を書きました。

今回はstashのメッセージを入力させるためtypeinputを指定しました。他にはmenu,confirmが指定できるようです。titleはプロンプトのタイトルを書きます。

stashのメッセージを考えるのは面倒だったため、 initialValueWIPを指定することで、プロンプトが表示された時にWIPが入力された状態にしました。

prompotsについて詳しくは公式ドキュメントを御覧ください。

最後に

lazygitの設定ファイルの例を紹介しました。 自作のキーバインドの追加方法が分かったので、今後の作業が捗りそうです。

このブログを書いている途中でドキュメントのリンク切れを発見したので、コントリビュートもしてみました。 今後も貢献できたらと思います。