## 事象
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 })
```
定期的に自動実行する方法もあるが、パフォーマンスが気になるので妥協した。