🚀

【Neovim】toggleterm.nvimとlazygitを組み合わせてgit操作を快適にする

2022/06/21に公開

Neovimにtoggleterm.nvimというターミナルの起動・開閉をスムーズに行えるプラグインがあります。

https://github.com/akinsho/toggleterm.nvim

こちらのREADMEの 「Custom terminal usage」の欄にlazygitを組み合わせた使い方が記述されており、この使い方が非常に快適で気に入っているため記事で紹介してみます。

https://github.com/akinsho/toggleterm.nvim#custom-terminal-usage

lazygit

lazygitはターミナルUIでgit操作が行えるツールです。カッコよくて無駄にgit操作をしたくなりますね...!

  • space で変更をstage
  • c で変更をコミット
  • p で変更をプッシュ
  • x でhelpを表示

の最低限の操作さえ覚えたら使っていけると思います。

https://github.com/jesseduffield/lazygit/

lazygit READMEより画像引用:

lazygit gif

git cz など外部のコマンドを普段利用している場合でも拡張が可能なため、diffの確認とstagingだけにメインで使うなど用途を絞った使い方もアリかもしれません。

https://github.com/jesseduffield/lazygit/wiki/Custom-Commands-Compendium

作業スペースに余裕がある場合はtoggletermを使わずにlazygitを分割した画面に常に表示しておくといった使い方も可能です。

lazygit

lazygitのインストール

READMEのinstallationを参考にインストールしましょう。macならHomebrew経由でインストール可能です。

$ brew install jesseduffield/lazygit/lazygit
$ brew install lazygit

https://github.com/jesseduffield/lazygit#installation

操作例

以下私の環境のキャプチャです。toggletermとlazygitを組み合わせてlazygitのREADMEと同じ操作(stage->commit->push)をするとこのようになります。

  • ノーマルモードから任意のキーでlazygitを起動
  • diffの確認。キー操作で変更ファイルをstage
  • commit
  • push

Kapture 2022-06-21 at 19 14 12

toggletermの設定

ほぼREADMEのままです。 READMEからアレンジしたところとすれば次の通りです。

  • 他にtoggletermを利用していないためterminalの番号を指定するcountは不要
  • keybindの変更。lg で開くようにする
local Terminal = require("toggleterm.terminal").Terminal
local lazygit = Terminal:new({
	cmd = "lazygit",
	direction = "float",
	hidden = true
})

function _lazygit_toggle()
	lazygit:toggle()
end

vim.api.nvim_set_keymap("n", "lg", "<cmd>lua _lazygit_toggle()<CR>", { noremap = true, silent = true })

lazygitの設定

特に設定なく使えますが、参考に私の設定ファイルを紹介しておきます。

git:
  paging:
    colorArg: always
    pager: delta --dark --paging=never
gui:
  sidePanelWidth: 0.15
  theme:
    selectedLineBgColor:
      - underline
    selectedRangeBgColor:
      - underline
refresher:
  refreshInterval: 3
os:
  editCommand: "nvim"

deltaというpagerを別で入れてハイライト表示するようにしています。

https://github.com/dandavison/delta

諸々詳細な設定が可能です。興味のある方は設定のドキュメントを参照してください。

https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md

まとめ

READMEの紹介程度ですが、非常に気に入っている操作ですのでまとめてみました。他ブランチの内容をcherry-pickしたりcommit --amend をサクッと実行したりとスムーズにgit操作が可能です。Neovimを使っている方はぜひお試しください。

スタフェステックブログ

Discussion