## 事象 1. ターミナルA([[Ghostty]]) と ターミナルZ([[Ghostty]]+[[Zellij]])を開く 2. 両方のターミナルで[[Neovim]]の特定ファイルを起動 3. ターミナルAでファイルを編集する 4. ターミナルZをアクティブにする ファイルが最新化されてほしいが最新化されない。 - ファイルを切り替えて戻すと更新されている - ターミナルZでファイル編集し、ターミナルAに戻った場合は更新される [[Neovim]]の関連設定部分。 ```lua -- 外部からファイルを変更されたら反映する vim.api.nvim_create_autocmd({ "WinEnter", "FocusGained" }, { pattern = "*", command = "checktime", }) ``` ### 環境 | 対象 | バージョン | | ----------- | ---------- | | [[macOS]] | 15.7.3 | | [[Ghostty]] | 1.2.3 | | [[Zellij]] | 0.43.1 | | [[Neovim]] | 0.11.5 | ## 原因 [[Zellij]]内の[[Neovim]]だと[[FocusGained (Vim)|FocusGained]]の[[イベント (Neovim)|イベント]]が発生せず、[[checktime (Vim)|checktime]]が実行されないから。 > [!left-bubble] ![[chappy.webp]] > • ほぼ原因が絞れました。nvim 側は [[FocusGained (Vim)|FocusGained]] 依存の [[checktime (Vim)|checktime]] だけなので、zellij でフォーカスイベントが不安定だと即時反映が止まる構成です。最終的に、確認手順と安全な回避策だけ短く整理して返します。 > > • はい、zellij が原因の可能性は高いです。 > > - あなたの設定は checktime を [[WinEnter (Neovim)|WinEnter]] / [[FocusGained (Vim)|FocusGained]] でしか走らせていません(mnt/nvim/lua/base.lua:42)。 > - Neovim の [[FocusGained (Vim)|FocusGained]] は「端末がフォーカスを通知したとき」に発火するイベントです。 > - zellij にはフォーカスイベント処理の不整合に関する未解決 issue があります(2025-11-18 作成、2026-02-17 時点で Open)。 > > まずは回避策として、[[FocusGained (Vim)|FocusGained]] 依存を減らして [[BufEnter (Vim)|BufEnter]] / [[CursorHold (Vim)|CursorHold]] でも [[checktime (Vim)|checktime]] を呼ぶのが有効です。 > 必要なら、変更プランを出してから nvim 設定を最小差分で直します。 > > Sources: > > - https://neovim.io/doc/user/autocmd.html#FocusGained > - https://github.com/zellij-org/zellij/issues/4522 > - https://github.com/zellij-org/zellij/releases ## 解決方法 今のところなし。以下のissueが対応されるのを待つしかなさそう。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" /> <span class="link-card-v2-site-name">GitHub</span> </div> <div class="link-card-v2-title"> Incorrect focus event handling across panes, tabs and clients · Issue #4522 · zellij-org/zellij </div> <div class="link-card-v2-content"> Zellij currently has multiple inconsistencies in how focus is determined and propagated to panes. This affects a ... </div> <img class="link-card-v2-image" src="https://opengraph.githubassets.com/58765fb81f9ec8f9c72581c47262b9200313199240c9ddb52ad18fa5ab7789a9/zellij-org/zellij/issues/4522" /> <a href="https://github.com/zellij-org/zellij/issues/4522?utm_source=chatgpt.com"></a> </div> ## 回避策 手動で[[checktime (Vim)|checktime]]を実行するようにする。 ```lua vim.keymap.set("n", "<C-l>", function() vim.cmd("checktime") vim.cmd("normal! <C-l>") end, { silent = true }) ``` 定期的に自動実行する方法もあるが、パフォーマンスが気になるので妥協した。