(with Warp) oh-my-zsh에서 Prezto로 이사하다

ryudev·2022년 10월 27일
0
post-thumbnail

TL;DR

  1. zsh startup이 너무 느렸다.
  2. oh-my-zsh 언인스톨 스크립트 돌린 후 해결되었다.
  3. 기왕 지운 김에 Prezto로 이사갔다.

Context

수 년 전에 oh-my-zsh 플러그인을 마지막으로 설치한 뒤, zsh 설정은 .zshrc 끝에 몇 줄 추가할 때 말고는 건드린 적이 없었다. 언젠가부터 startup이 3초 이상, 심할 경우는 5초 넘게 걸릴 정도로 상당히 느려졌지만(처음부터 느렸을 수도 있다) 그런대로 적응해서 살고 있었다. 평소에도 다른 사람의 빠른 Shell startup time을 부러워만 하다가, 귀찮아서 미루던 중, 오늘 날 잡고 해결하기로 마음먹었다.

Warp.dev

Warp를 쓰는 중이다. 올해 초에 지인에게 초대를 받았었다. 일단 예쁘고 컨셉이 마음에 들어서 iTerm과 병행해서 쓰기 시작했다가 현재는 메인으로 쓰고 있다. Warp는 자체 기능이 특이하기도 하고 아직 어린 프로젝트라서 기존 oh-my-zsh 세팅 중 지원하지 않는 부분(1, 2)이 상당히 있었기에 처음엔 불편했지만, 사용하다 보니 점차 익숙해져서 나중에는 iTerm을 거의 켜지 않게 되었다.

간단 Tweak 시도

.zshrc를 먼저 수정해 봤다. Warp를 쓰면서 내가 깔려있던 모든 플러그인이 꼭 필요했던 건 아니라는 것을 깨달았기에, 로딩하는 플러그인들만 좀 지워도 속도가 크게 빨라질 것이라 기대했다. 결과는 실망스러웠다. 빨라지기는 했지만 여전히 1s는 걸리는 것 아닌가. 어제보단 나아졌지만 만족스럽지 않았다.

더욱이 이상한 것은, 하나씩 플러그인을 지워 보다가, 절반 가량을 날려 봤다가, 아예 플러그인을 전부 지워도 보고, oh-my-zsh를 로딩하는 부분마저 지웠는데도 여전히 일정 이상 빨라지지 않았다는 것이다. 한가한 김에 시간을 좀 더 써보기로 했다.

탐색

oh-my-zsh의 Performance 관련하여 좀 찾아 보다가 샛길로 들어서서 여러 정보를 얻게 됐다. 4년 전 글이지만 zsh의 플러그인 매니저들을 퍼포먼스 중심으로 리뷰한 글도 찾았고, (잠깐 옆으로 새자면) 무엇보다 Fig라는 프로젝트를 알게 됐는데, 이거 물건이었다. "The next-generation command line." 이라는 설명에 꿀리지 않는 기능. 하지만 Warp와 풀려는 문제가 여러 곳에서 겹치는 것 같았고, 같이 쓰려고 하다간 수많은 이슈를 만날 것 같다는 직감이 강하게 왔다. 오늘 목적은 다른 것보다 startup 퍼포먼스였고, 오전 내로 세팅을 끝내고 싶었기 때문에 불확실성을 더 늘리고 싶지 않았다. Warp를 버릴까도 고민했지만 Fig가 접근법상 할 수 없는 Warp의 기능들이 마음에 들었기 때문에 Fig에 도전하는 건 다음 기회로.

Prezto

Prezto는 oh-my-zsh의 fork로 시작했으며 optimisation에 더 공들였다는 것 같았다. 오랜 세월이 지났고 그 동안 oh-my-zsh나 Prezto에 어떤 변화가 있었는지는 알 수 없지만, 지나치게 혁신적이지도 않고 메인테이너의 "언제나 Prezto는 oh-my-zsh보다 빨랐다"는 말도 있기에 시도해 볼 만한 가치는 있어 보였다.

oh-my-zsh 삭제

애초에 아무리 생각해도 순수한 zsh이 이렇게 느린 것은 납득할 수 없었으므로, oh-my-zsh가 여전히 뭔가 하고 있다고 생각했다. 자체 언인스톨 명령어는 내가 죄다 설정을 지워놔서 동작하지 않았기에, sh ~/.oh-my-zsh/tools/uninstall.sh로 지워 봤다. 성공적이었다. 드디어 startup 시간이 견딜 수 있을 정도로 눈에 띄게 줄어들었다. 수백 밀리초쯤 걸리는 것 같은데, 충분히 만족할 만한 수준이었다. oh-my-zsh가 (아무래도 자칭 프레임워크니만큼)설치 과정에서 뭔가 하는 것인지, 캐시 파일이나 히스토리 같은 게 같이 지워져서 그런건지는 알 수 없었지만 이미 이사갈 생각 잔뜩이었으므로 더 신경 쓰지 않았다.

Prezto 설치 후 이사 완료

위 메뉴얼 따라 설치를 마쳤다. 다시 조금 느려진 것 같긴 했지만 그래도 견딜만 한 정도였다. 약간의 추가 설정 후 완료. 아직까진 괜찮은 느낌이다. fork 프로젝트 답게 oh-my-zsh의 기본적인 alias를 지원하기 때문에, 많은 설정이 필요하진 않았다. 오늘 zsh 설정과 좀 친해졌기 때문에 더 그럴지도.

Warp는 completion 같은 것을 자체 구현하고 있기 때문에, zsh의 설정을 일부 무시한다. 미지원 플러그인을 일일이 찾아서 끄기가 상당히 귀찮은데, Warp에서 zsh를 default 쉘로 쓰는 만큼, oh-my-zsh나 prezto를 쓸 때의 권장 설정 가이드 같은 게 있었음 좋겠다 싶다.


Notes

  • 2020 Macbook Pro (Intel)
  • 눈대중으로도 각 설정의 속도 차이가 컸기 때문에, 측정은 하지 않았다. 언급되는 모든 숫자는 감이다.
  • 이제 와서 생각하건대, 다른 것 시도하기 전에 oh-my-zsh를 클린 재설치했다면 지금 결과와 크게 차이 나지 않았을지도?
profile
nomad

0개의 댓글