你的 Ghostty 键绑定已损坏(60 秒快速修复)
Source: Dev.to
引言
你是否遇到过按 ⌘← 想跳到行首,却只得到 Ghostty 打印的 ^A?
让我们来修复它。
macOS 有一套漂亮的文本导航快捷键:
- ⌥← / ⌥→ – 按词跳转
- ⌘← / ⌘→ – 跳到行首/行尾
- ⌘⌫ – 删除光标前的所有内容
这些在任何地方都能使用——Notes、VS Code、浏览器——但 Ghostty 却不行。相反你会得到类似这样的乱码:
python -m venv .venv && source .venv/activate^E^A^E^A
效果不佳。
修复快捷键绑定
-
创建或编辑 Ghostty 配置文件
mkdir -p ~/.config/ghostty nano ~/.config/ghostty/config -
添加以下行(文件采用简单的
key = value格式):macos-option-as-alt = true -
保存并重启 Ghostty(它不会热加载配置更改)。
-
确保你的 shell 能解释这些转义码
bindkey -e如果有效,请将其设为永久:
echo "bindkey -e" >> ~/.zshrc
就这样,完成了。
这些 ^A 和 ^E 实际上是 “行首” 与 “行尾” 的正确转义码——只是你的 shell 没有监听而已。
快捷键参考
| 快捷键 | 发送的内容 | 操作 |
|---|---|---|
| ⌘← | Ctrl+A | 行首 |
| ⌘→ | Ctrl+E | 行尾 |
| ⌥← | \x1bb | 向后跳一个词 |
| ⌥→ | \x1bf | 向前跳一个词 |
bindkey -e 命令会把 zsh 设为 Emacs 模式,这正是它能够识别这些代码的原因。某些 shell 配置(尤其是使用 oh‑my‑zsh 或其他框架时)可能会覆盖此设置,所以显式添加它是个好主意。
如果你是从 Warp 切换到 Ghostty,这大概是你首先感受到的破碎之处。Warp 原生支持这些快捷键,因为它的实现方式不同。Ghostty 是传统的终端模拟器,需要一点额外的帮助。
现在,你既拥有 Ghostty 的速度与简洁,又拥有手指期待的快捷键。
已在 macOS 上的 Ghostty + zsh 环境中测试。