lazygitをカスタマイズしてみた
どうも。CX事業本部Delivery部のえーたん(@eetann092)です。
先日lazygitの最近お世話になり始めた機能を紹介 | DevelopersIOを書いている際に、lazygitに自作キーバインドを追加できることを知りました。 設定ファイルの紹介も兼ねて、カスタマイズの例を紹介します。
設定ファイルについての公式ドキュメント
lazygitの設定ファイルを配置する場所やデフォルト値、その他細かい説明についてはdocsディレクトリの中のファイルに書かれています。 また、Wikiにもカスタマイズの例が載っています。
言語を変えてみる
日本語表示にする設定は以下です。
gui: language: 'ja'
韓国語表示にもしてみました。
gui: language: 'ko'
アイコンを表示する
Nerd Fonts使用時に以下のように設定すれば、アイコンを表示できます。
gui: showIcons: true
v0.35からサポートされたようです。
自作キーバインドを追加する
設定ファイルのcustomCommands
に書くことで自作のキーバインドを追加できます。
以下は、「untrackedファイルを含むstash」のキーバインドの設定例です。
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'
まず、実際に上記のキーバインドを使用したときの表示をお見せします。
実行の流れは以下です。
u
キーを入力する- プロンプトにstashメッセージを入力する(デフォルト値:
WIP
) - Enterを押すと
git stash save --include-untracked "入力したメッセージ"
が実行される
いくつかに区切って説明します。
customCommands: - key: 'u'
まず、最初の2行ではcustomCommands
のkey
でキーバインドを指定しています。
使用できるキーは、a
,b
,c
のような一文字か公式ドキュメントに載っている組み合わせのいずれかです。
context: 'files' description: 'stash include untracked'
context
では、どのパネルにキーバインドを設定するかを書きます。
指定できるcontext
の一覧も公式ドキュメントに掲載されています。
description
は、x
キーを入力したときのメニューに表示されます。
command: 'git stash save --include-untracked "{{index .PromptResponses 0}}" '
command
には、キーバインドを入力した時に実行してほしいコマンドを書きます。このとき、{{index .PromptResponses 0}}
のようにプレースホルダーを指定することで、プロンプトで入力させた値を展開できます。
{{index .PromptResponses 0}}
はprompts
で書かれた最初のプロンプトの値を展開する、という意味になります。
このプレースホルダーはGoのテンプレートと同じ書き方です。
.PromptResponses
のようなlazygitですでに用意されているプレースホルダーについては、公式ドキュメントで確認できます。
prompts: - type: 'input' title: 'Stash Message' initialValue: 'WIP'
最後にprompots
にプロンプトの内容を書きました。
今回はstashのメッセージを入力させるためtype
にinput
を指定しました。他にはmenu
,confirm
が指定できるようです。title
はプロンプトのタイトルを書きます。
stashのメッセージを考えるのは面倒だったため、
initialValue
にWIP
を指定することで、プロンプトが表示された時にWIP
が入力された状態にしました。
prompots
について詳しくは公式ドキュメントを御覧ください。
最後に
lazygitの設定ファイルの例を紹介しました。 自作のキーバインドの追加方法が分かったので、今後の作業が捗りそうです。
このブログを書いている途中でドキュメントのリンク切れを発見したので、コントリビュートもしてみました。 今後も貢献できたらと思います。