【Neovim】toggleterm.nvimとlazygitを組み合わせてgit操作を快適にする
Neovimにtoggleterm.nvimというターミナルの起動・開閉をスムーズに行えるプラグインがあります。
こちらのREADMEの 「Custom terminal usage」の欄にlazygitを組み合わせた使い方が記述されており、この使い方が非常に快適で気に入っているため記事で紹介してみます。
lazygit
lazygitはターミナルUIでgit操作が行えるツールです。カッコよくて無駄にgit操作をしたくなりますね...!
-
space
で変更をstage -
c
で変更をコミット -
p
で変更をプッシュ -
x
でhelpを表示
の最低限の操作さえ覚えたら使っていけると思います。
lazygit READMEより画像引用:
git cz
など外部のコマンドを普段利用している場合でも拡張が可能なため、diffの確認とstagingだけにメインで使うなど用途を絞った使い方もアリかもしれません。
作業スペースに余裕がある場合はtoggletermを使わずにlazygitを分割した画面に常に表示しておくといった使い方も可能です。
lazygitのインストール
READMEのinstallationを参考にインストールしましょう。macならHomebrew経由でインストール可能です。
$ brew install jesseduffield/lazygit/lazygit
$ brew install lazygit
操作例
以下私の環境のキャプチャです。toggletermとlazygitを組み合わせてlazygitのREADMEと同じ操作(stage->commit->push)をするとこのようになります。
- ノーマルモードから任意のキーでlazygitを起動
- diffの確認。キー操作で変更ファイルをstage
- commit
- push
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を別で入れてハイライト表示するようにしています。
諸々詳細な設定が可能です。興味のある方は設定のドキュメントを参照してください。
まとめ
READMEの紹介程度ですが、非常に気に入っている操作ですのでまとめてみました。他ブランチの内容をcherry-pickしたりcommit --amend
をサクッと実行したりとスムーズにgit操作が可能です。Neovimを使っている方はぜひお試しください。
Discussion