## 事象
`yazi.toml` が以下の設定であるとき
```toml
[opener]
preview = [
{ run = 'qlmanage -p "$0"', desc = "Quick Look Preview"}
]
gimp = [
{ run = 'LANG=ja gimp -n "$0"', desc = "GIMP"}
]
[open]
prepend_rules = [
{ mime = "image/*", use = "preview" },
{ mime = "video/webm", use = "open" },
]
append_rules = [
{ mime = "image/*", use = "gimp" },
]
```
[[PNG]]ファイルに `open --interactive` を実行したら、v25.5.31では `prepend_rules` と `append_rules` の設定が前後にマージされていた。
![[2026-01-07-06-05-19.avif]]
しかし、v26.1.4では `prepend_rules` の設定で完全上書きされてしまう。
![[2026-01-07-06-05-55.avif]]
### 環境
| 対象 | バージョン |
| --------- | ---------- |
| [[macOS]] | 15.7.2 |
| [[Yazi]] | v26.1.4 |
## 原因
`prepend_rules` や `append_rules` は **`rules` の各条件における `use` の前後にopenerを追加するわけではない** から。
仕様としては
- `prepend_rules`
- 条件に一致したら、**`rules` の条件よりも優先して**採用する
- `append_rules`
- **`prepend_rules` や `rules` の条件を満たさなかった場合で**、この条件を満たす場合のみ採用する
以下の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">
fix: user-prepended open rules do not override presets by sxyazi · Pull Request #3360 · sxyazi/yazi
</div>
<div class="link-card-v2-content">
Fixes #3357 (comment)
</div>
<img class="link-card-v2-image" src="https://avatars.githubusercontent.com/u/17523360?s=400&v=4" />
<a href="https://github.com/sxyazi/yazi/pull/3360/files"></a>
</div>
`find` にすべきところが `filter` になっていたので、条件を通過したものがすべて意図せずマージされてしまっただけらしい。
## 解決方法
[[preset設定 (Yazi)|preset設定]]を参考にして以下のように書き換える。
```toml
[open]
prepend_rules = [
{ mime = "image/*", use = ["preview", "open", "reveal", "gimp"] },
{ mime = "video/webm", use = "open" },
]
```
> [!warning]
> `rules` として設定すると、`rules` の条件がすべて上書きされてしまうのでやらないほうがいい。
## 参考
- [yazi.toml | Yazi](https://yazi-rs.github.io/docs/configuration/yazi/#open)