## 事象 [[lazygit.nvim]]で`ESC`キーが使えない。[[Lazygit]]上で[[ノーマルモード]]に切り替わってしまう。 文字列を[[ヤンク]]したりするため[[ノーマルモード]]も利用したいが、大多数は[[Lazygit]]の`ESC`キーに割当たった機能を使いたいので、そちらを優先したい。 ## 原因 [[ターミナルジョブモード]]で[[Neovim]]標準の`ESC`キーマップが優先されるため(のはず....)。 ## 解決方法 モードチェンジとして`ESC`を使いたいわけでなければ[[#fm-nvim を使う]]方法を推奨。 ### [[fm-nvim]]を使う [[lazygit.nvim]]はアンインストールして[[fm-nvim]]を使う。それだけで、その辺の問題は旨く回避してくれる。 ```lua { "is0n/fm-nvim", keys = { { '<Space>gg', ':Lazygit<CR>' } }, ``` ### 設定で無理やりマッピングする [[init.lua]]に以下を追加する。 ```lua 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 }) ``` [[GitHub]] Issuesでは以下が最も近そうだが、[[Neovim]]と[[Vim]]の違いや3年以上前の情報であることからそのままでは到底動かない。先のコードにコメントとして記載した箇所がそれに該当する。 <div class="link-card"> <div class="link-card-header"> <img src="https://github.githubassets.com/favicons/favicon.svg" class="link-card-site-icon"/> <span class="link-card-site-name">GitHub</span> </div> <div class="link-card-body"> <div class="link-card-content"> <div> <p class="link-card-title"><ESC> key not work with Lazygit inside Neovim · Issue #7 · kdheepak/lazygit.nvim</p> </div> <div class="link-card-description"> I'm using 0.4.3 branch . Currently, Lazygit has key to exit/return inside itself. But if I use it in... </div> </div> <img src="https://opengraph.githubassets.com/2fa0e56862a7342a688b8caf6ec7681232a10e3f09cde017a07534b731d374b6/kdheepak/lazygit.nvim/issues/7" class="link-card-image" /> </div> <a href="https://github.com/kdheepak/lazygit.nvim/issues/7"></a> </div> ## 参考 - [\<ESC\> key not work with Lazygit inside Neovim · Issue \#7 · kdheepak/lazygit\.nvim](https://github.com/kdheepak/lazygit.nvim/issues/7) - [Neovim Lua設定覚え書き&LSP入門](https://zenn.dev/botamotch/articles/4ef893e0d4cd40) - [おさらい autocmd/augroup \#Vim \- Qiita](https://qiita.com/s_of_p/items/b61e4c3a0c7ee279848a) - [NeovimのためのLua入門 init\.lua編](https://zenn.dev/slin/articles/2020-11-03-neovim-lua2)