17
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CatallaxyAdvent Calendar 2022

Day 8

lazygitでどのくらいlazyになれるか試してみる

Last updated at Posted at 2022-12-07

TUIキテますね(しらんけど)!lazydocker、lazygit、最近ではlazynpmとか見かけるようになりました。GUI製はOSSじゃないことが多いですし、概ねキーバインドやカスタマイズ性が良くないことが多く、一方TUIはマウスを使いたくないlazyな人たちが作る代物なのでそのへんは良く考慮されてるなぁと感じます!

というわけで日々使うgitツールをlazygitに乗り換えてみて感想を書いてみたいと思います。

背景

ちなみにこれまではfugitive.vim → forkと渡り歩いてきました。fugutive.vimはvimからgitを扱えるというものなのでブランチ操作(特にinteractive rebase)などにおいては不便に感じており、一年ほど前からforkを使ってきました。forkはUIがとても洗練されていますがキーバインドが十分とは言えず、どうしてもマウス操作が多くポチポチやる必要がありました。あとgooglability悪い。

gitのTUIといえば、tig、lazygit、最近ではrust製のgituiが有名どころかと思いますが、golang、スター数、twitterでの評判、汎用猿型飯テロ決戦兵器 人造類人猿ゴリラゲリオンさん推し(@gorilla0513)ということでlazygitを使ってみたいと思います。

メニューが親切、キーバインドがわかりやすい

起動したところのスクショですが、最下部に操作方法が表示されているので x でメニューを開いてみます。どのセクション(context)にいるかでメニューが変わるようです。


わかりやすい!!キーバインドも表示されています。

例)masterからhogeブランチを切ってみたところ
スクリーンショット 2022-12-07 15.27.59.png

右下のコマンドログで実際に発行されるgitコマンドが表示されるのもブラックボックス感がなくていいですね。

カスタマイズもかんたん

コンフィグをいじってみます。

gui(tuiでないのか。。)

TUIということもあり、そもそも味気ないのでアイコンは表示するようにしてみました。

    # config.yml
    gui:
      showIcons: true

いいですね!アイコン表示にはNerd Fontsが必要です。

ちなみに私は以下のフォントを使っています。
スクリーンショット 2022-12-07 15.19.56.png

ログ

ログは今まで使っていたワンライナーのフォーマットに調整してみました。

    # config.yml
    git:
      branchLogCmd: "git log --graph --color=always --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' {{branchName}} --"
      allBranchesLogCmd: "git log --graph --color=always --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --all"


いつもの感じで見やすい!

コマンド

lazyになるために適当に空コミットを作る git commit —allow-empty するコマンドを作ってみました。

    # config.yml
    customCommands:
      - key: "E"
        prompts:
          - type: "input"
            title: "Epmty commit message"
            initialValue: ""
        command: "git commit --allow-empty -m {{index .PromptResponses 0 | quote}}"
        context: "files"
        description: 'create empty commit'
        loadingText: "creating empty commit"

contextをfilesとしたので、ファイルのセクションにいるときにメニューに表示されるようになりました。

E をタイプすると空コミットメッセージのプロンプトが出るので空コミットがかんたんに作れるようになりました。

おわりに

いきなりカスタマイズの話をしてしまいました。実践で使ってどうなのよというところを本来書くべきところですが、使い始めてまだ数日なのでご容赦いただければと思います。ともあれ所感、めっちゃいい!!lazyな自分には可能性を感じました。長い付き合いになりそうです。書いてませんが、特にinteractive rebaseめっちゃやりやすいです。もうちょっと使いこなして考えるスピードで操作できるようになってきたらまた書きたいと思います。

17
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?