## 経緯
実現方法がシンプルだったので、当初は[[fm-nvim]]を使って[[Neovim]]上での[[Lazygit]]利用をしていた。しかし、しばらく開発をしていて **今開いているファイルの履歴を調べたい** ケースが増えてきた。
[[lazy.nvim]]は`LazyGitFilterCurrentFile`というコマンドでそのような機能を提供しているので試したくなった。
また、[[fm-nvim]]で連携しているもう1つのツール、[[Bruno]]を[[Neovim]]から使う機会が減ってきたので、[[fm-nvim]]の使用をやめるのもアリかもと思っている。
## インストール/設定
[[fm-nvim]]は無効化した上でインストールする。[[init.lua]]は以下。現在のファイルを開くコマンドは `<Space>f` に割り当てている。
```lua
{
"kdheepak/lazygit.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
},
keys = {
{ "<Space>g", ":LazyGit<CR>", silent = true },
{ "<Space>f", ":LazyGitFilterCurrentFile<CR>", silent = true },
},
config = function()
vim.g.lazygit_floating_window_scaling_factor = 0.97
local bkey = vim.api.nvim_buf_set_keymap
-- Lazygit起動時にESCを無効化する
vim.api.nvim_create_augroup("LazygitKeyMapping", {})
-- ⚠️TermEnterでは起動されたバッファではなく、起動したバッファが対象になってしまう
vim.api.nvim_create_autocmd("TermOpen", {
group = "LazygitKeyMapping",
pattern = "*",
callback = function()
local filetype = vim.bo.filetype
-- filetypeにはlazygitが渡る。空文字ではない
if filetype == "lazygit" then
-- このkeymapが肝。なんでこれで動くのかは謎
bkey(0, "t", "<ESC>", "<ESC>", { silent = true })
-- <C-\><C-n>がNeovimとしてのESC。<ESC>はLazygitが奪う
bkey(0, "t", "<C-v><ESC>", [[<C-\><C-n>]], { silent = true })
end
end,
})
end,
}
```
処理のほとんどは`ESC`が機能するようにする対応。
> [[📝lazygit.nvimでESCキーがNeovimのノーマルモード変更にとられてしまい利用できない]]
また、[[Lazygit]]からファイルを開いたとき、`Press enter return to lazygit`の画面を挟んでしまい、しかもそこでは[[挿入モード]]に移行してEnterを押さなければいけないと面倒なので、設定で表示しないようにした。
> [[📝Lazygitでファイル編集画面に移動して画面を閉じるとPress enter to return to lazygitというメッセージが表示されてしまう]]