## 事象
[[Zsh]]のターミナルにて、`<ESC>` を押した後に `i` などを押すと、`i` がターミナルに入力されず、別の動作として動く。
![[Pasted image 20250405224856.png|frame]]
*Windows Terminalだとベルマークが...*
[[Neovim]]から離脱したときや、癖でつい `ESC` を押してしまうので、それは無視してほしい。
### 環境
| 対象 | バージョン |
| -------------------- | ----------------------------- |
| [[Ubuntu]] | 24.04.1 LTS |
| [[Neovim]] | 0.11.0 |
| [[Windows Terminal]] | 1.22.250204002 |
| [[Zsh]] | 5.9 (x86_64-ubuntu-linux-gnu) |
## 原因
[[Zsh]]で `ESC` (`^[`) は特殊なシーケンスとして割り当てられているため、以降に押されるキーとセットで動作する前提になっているから。
## 解決方法
以下2つの対応をする。
- `^[` のキーバインドを解除する
- `^[a` ~ `^[z` のキーバインドを解除する
```zsh
# ESC単独の無効化
function ignore_esc() { true }
zle -N ignore_esc
bindkey '\e' ignore_esc
# ESC 1回押しのあとにアルファベットが入力されたらプロンプトに入力する
for char in {a..z}; do
bindkey -r "\e$char"
done
```