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를 재시작합니다 (설정 변경 사항은 자동으로 적용되지 않습니다).
-
쉘이 이스케이프 코드를 해석하도록 합니다
bindkey -e정상 동작한다면 영구적으로 적용합니다:
echo "bindkey -e" >> ~/.zshrc
그게 전부입니다. 이제 완료되었습니다.
^A와 ^E 문자는 실제로 “줄의 시작”과 “줄의 끝”을 의미하는 올바른 이스케이프 코드이며, 쉘이 이를 받아들이지 않았을 뿐입니다.
키바인딩 참고표
| 단축키 | 보내는 코드 | 동작 |
|---|---|---|
| ⌘← | Ctrl+A | 줄의 시작 |
| ⌘→ | Ctrl+E | 줄의 끝 |
| ⌥← | \x1bb | 한 단어 뒤로 |
| ⌥→ | \x1bf | 한 단어 앞으로 |
bindkey -e 명령은 zsh를 Emacs 모드로 전환하여 이러한 코드를 이해하도록 합니다. 특히 oh‑my‑zsh 같은 프레임워크를 사용하고 있다면 이 설정이 덮어씌워질 수 있으니 명시적으로 추가하는 것이 좋습니다.
Warp에서 Ghostty로 전환했다면, 이 문제가 가장 먼저 깨진 것처럼 느껴졌을 것입니다. Warp은 이러한 단축키를 자체적으로 처리하지만, Ghostty는 전통적인 터미널 에뮬레이터이기 때문에 약간의 설정이 필요합니다.
이제 Ghostty의 속도와 단순함에 여러분이 기대하는 키바인딩을 모두 갖추게 되었습니다.
Ghostty + zsh 환경에서 macOS에 테스트되었습니다.