Skip to content
Kendrick's Website Kendrick's GitHub Kendrick's Youtube Kendrick's Travel blog

Starship - Cross-shell prompt and zsh plugins

9 min read
Cover

이번 포스트에서는 크로스-쉘 프롬프트인 Starship을 소개합니다.

What is the Starship?

Starship은 cross-shell prompt라고 합니다. Starship

cross-shell prompt란?

이 도구는 다양한 쉘 환경에서 작동하는 명령줄 인터페이스입니다. 전통적인 쉘 프롬프트가 특정 쉘(예: Bash 또는 Zsh)에만 특화되어 있는 것과 달리, 크로스-쉘 프롬프트는 별도의 코어 기능이나 외관 변경 없이 여러 쉘과 호환됩니다. 이는 다양한 운영 체제에서 여러 쉘을 사용하는 사용자에게 매우 유용합니다. 또한, 어떤 쉘을 사용하든 일관된 프롬프트 인터페이스를 제공하여 사용자 경험을 단순화시킵니다.

왜 Starship인가?

우선 저는 Powerlevel9k를 3년 넘게 사용했었는데, 갈수록 느려지는 걸 느껴서 다른 쉘 프롬프트를 찾아봤습니다. 물론 바닐라도 좋지만, 커스터마이즈된 Theme에 매료되어 비슷한 것들을 찾아보다가 Powerlevel10k로 전환했습니다. 몇 달 사용하다 Starship을 발견하여 다시 전환했습니다.

Powerlevel 같은 경우 Zsh에서만 사용이 가능하며, 가장 큰 문제는 처음 커스터마이징하는 데 시간이 너무 들어간다는 것입니다. Starship 사용 이후 간단하게 설치하고 나서 자주 사용하는 필수 zsh만 설치하면 되니 새로운 workspace 설정에 들어가는 시간 대비 제공하는 기능이 만족스러웠습니다.

그렇게 1년 넘게 사용하니, 이제는 추천하면 좋을 것 같아 이 글을 작성하게 되었습니다.

장단점

Powerlevel10k를 만든 사람이 레딧에 작성한 스타쉽과 장단점입니다.

스타쉽의 장점:

  • 다양한 셸에서 작동합니다. 프롬프트를 한 번만 구성하면 bash, fish, zsh에서 모두 사용할 수 있습니다.
  • 훌륭한 문서.
  • 구성이 매우 간단합니다.
  • Rust로 작성되었습니다.

파워레벨10K의 장점:

  • 더 많은 기능: 일시적 프롬프트, 인스턴트 프롬프트, 명령 시 표시 등.
  • 마법사로 구성할 수 있습니다.
  • 훨씬 빠릅니다.

무엇을 사용할까?

나는 내 마음대로 커스터마이즈하고 싶다? -> Powerlevel10k

나는 커스터마이즈에 시간을 많이 쓰고 싶지 않고, zsh, bash, fish 등을 사용하고 있다. -> Starship

나는 Fish를 쓴다? -> Tide

이 툴들은 서로 비슷한 Theme을 가지고 있습니다. 내가 터미널을 자주 사용하기 때문에 나만의 스타일로 개인화하고 싶다면 Powerlevel10k를 적극 추천하는 바이며, 반대로 바닐라 같은 깔끔한 환경을 좋아하고 설정에 시간을 많이 쏟기는 싫은 대신, 미리 잘 세팅되어 있는 상태로 설치하고 바로 사용하고 싶으신 분들은 Starship을 추천합니다.

특히 MacOS를 사용 중이라면, 특정 OS 버전부터 기본 셸을 zsh로 사용하기 때문에 Powerlevel10k나 Starship 중에 고민하셔서 사용하기를 추천드립니다.

VSCode + iTerm2 + Starship

저는 iTerm2를 거의 터미널처럼 사용하고 있습니다. 그리고 VSCode에 iTerm2를 터미널로 사용하도록 연동해놓았습니다.

이렇게 하면 VSCode에서 터미널 사용 시에도 iTerm 간의 이질감 없이 사용할 수 있습니다. 자세한 설정 방법은 아래 StackOverflow 링크를 공유합니다.

Change default terminal app in Visual Studio Code on Mac - StackOverflow

  1. Code (Menu) > Preferences > User Settings
  2. Edit settings.json "terminal.external.osxExec": "iTerm.app" and "terminal.explorerKind": "external"
  3. Open in Terminal

## 추천 플러그인

마지막으로 Zsh 사용자를 위한 추천 플러그인을 몇 가지 소개합니다. 설명과 예제를 참고하여 필요에 따라 설치하세요. 설치 방법은 제공된 링크를 따라하시면 됩니다.

fuck 링크

터미널 사용 시 커맨드에 오류가 있을 경우, 더 적절한 커맨드를 제시해주며, 'fuck'을 다시 입력하면 해당 커맨드를 실행해줍니다.

예시: 1)

 apt-get install vim
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

 fuck
sudo apt-get install vim [enter/↑/↓/ctrl+c]
[sudo] password for nvbn:
Reading package lists... Done

예시: 2)

➜ puthon
No command 'puthon' found, did you mean:
 Command 'python' from package 'python-minimal' (main)
 Command 'python' from package 'python3' (main)
zsh: command not found: puthon

➜ fuck
python [enter/↑/↓/ctrl+c]
Python 3.4.2 (default, Oct  8 2014, 13:08:17)

fzf는 터미널 환경에서 탐색을 도와주는 도구입니다. 이 도구는 예전 486 컴퓨터에서 사용하던 mdir을 연상시킵니다.

![[starship-shell-prompt-5.png]]

grep을 사용하는 것도 좋지만, fzf는 더 범용적으로 사용하기 좋아 추천합니다.

비슷한 fd라는 도구도 있으니 참고하시면 좋을 것 같습니다.

이 기능은 자동 완성을 제공합니다.

과거에 입력했던 명령어들을 기반으로 하며, 반복되는 명령어 입력 시 매우 유용합니다.

예를 들어, 긴 Docker 실행 명령어나 유사한 긴 명령어들을 히스토리에서 찾지 않고도 자동 완성 기능으로 손쉽게 사용할 수 있습니다. 개인적으로는 마지막에 입력한 명령어를 우선적으로 사용하도록 설정했습니다. ![[starship-shell-prompt-6.png]]

자동완성 해주는 기능입니다.

이전에 내가 입력한 command를 사용하며, 반복되는 command입력을 하게 되는 경우가 많은데 이때 정말 도움이 되는 도구입니다.

예를들어 아주 긴 Docker 실행명령 혹은 이와 같은 긴 명령어들을 history에서 찾을필요없이 앞에 몇개만 입력하면 자동완성으로 보여주고 tab을 누르면 입력됩니다.

개인적으로 설정은 마지막 입력한 명령어를 우선으로 사용하고 있습니다.

![[starship-shell-prompt-7.png]]

많은 개발자들이 이미 사용하고 있을 nvm도 추천합니다. 이 도구는 여러 노드 버전 환경에서 작업하는 개발자에게 필수적입니다.

nvm install [version]으로 설치할 수 있으며, nvm use [version] 명령어를 통해 현재 터미널의 노드 버전을 쉽게 변경할 수 있습니다.