한글 입력 상태에서 oh-my-zsh 자동 업데이트 프롬프트의 ㅛ를 Y로 받아주는 zsh 플러그인.
터미널을 열었을 때 oh-my-zsh가 다음을 묻는 경우가 있다.
[oh-my-zsh] Would you like to update? [Y/n]
여기서 한글 입력이 켜져 있으면 Y 키를 눌러도 ㅛ가 입력된다. oh-my-zsh의 tools/check_for_upgrade.sh는 [yY$'\n']만 yes로 인정하므로 업데이트가 건너뛰어진다. 이 플러그인은 그 한 줄의 read 호출을 가로채서 ㅛ → Y로 번역한다.
git clone https://github.com/co0ki3/yo ~/.oh-my-zsh/custom/plugins/yo~/.zshrc의 plugins=(...)에 yo 추가:
plugins=(git yo)zinit light CO0Ki3/yoCO0Ki3/yooh-my-zsh는 oh-my-zsh.sh:71에서 tools/check_for_upgrade.sh를 source한 뒤, 그보다 한참 뒤(204행)에 비로소 플러그인을 로드한다. 즉 최초 업데이트 프롬프트가 뜨고 처리될 때 이 플러그인의 read 래퍼는 아직 존재하지 않는다. 그래서 다음 2단계로 동작한다.
- 플러그인이 로드되는 시점에
read래퍼를 정의한다. 래퍼는 호출 패턴이-k 1+ 변수명option일 때만 개입하고, 그 외에는 빌트인read를 그대로 호출한다. $ZSH_CACHE_DIR/.zsh-update의LAST_EPOCH를 확인해 첫 호출이 정상 처리됐는지 추론한다.- 첫 사용자 프롬프트가 뜨기 직전
precmd훅에서 래퍼를 제거 — 세션 동안 일반read동작에는 영향이 없다.
auto/reminder/background-alpha/disabled 모드에서는 대화형 프롬프트 자체가 없거나 별도 훅에서 처리되므로 플러그인은 개입하지 않는다.
플러그인 로딩 순서를 바꿀 수 없으므로, 첫 입력이 잘못 인식된 경우 프롬프트가 두 번 뜬다:
[oh-my-zsh] Would you like to update? [Y/n] ㅛ ← 1회차: 래퍼 없음, 미인식
[oh-my-zsh] You can update manually by running `omz update`
[oh-my-zsh] Would you like to update? [Y/n] ㅛ ← 2회차: 래퍼가 Y로 번역
정상적으로 Y/N이 인식된 경우엔 두 번째 프롬프트가 뜨지 않는다.
MIT