oh my zsh custom theme
개요
oh my zsh
을 사용하고 있었는데 기본 테마인 robbyrussell
를 사용했을 때 지금 실행하고 있는 터미널이 docker
인지 host
인지 utm
인지 구분이 되지 않아서 이를 해결할 수 있는 theme를 제작했습니다. 완성된 theme는 아래 링크에 있습니다.
robbyrussell
oh my zsh
을 설치하면 바로 적용되는 기본 테마로 다음과 같이 구현되어 있습니다.
1
2
3
4
5
6
7
PROMPT="%(?:%{$fg_bold[green]%}%1{➜%} :%{$fg_bold[red]%}%1{➜%} ) %{$fg[cyan]%}%c%{$reset_color%}"
PROMPT+=' $(git_prompt_info)'
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}%1{✗%}"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})"
정말 간단하게 구현이 되어 있고 만약 git
환경이면 해당 환경에 맞게 PROMPT
에 출력하고 있습니다.
custom robbyrussell
여기서 오른쪽 공간이 여유가 있기 때문에 아래와 같이 수정하여 PROMPT
의 오른쪽을 활용하여 구분할 수 있게 코드를 작성했습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
PROMPT="%(?:%{$fg_bold[green]%}%1{➜%} :%{$fg_bold[red]%}%1{➜%} ) %{$fg[cyan]%}%c%{$reset_color%}"
PROMPT+=' $(git_prompt_info)'
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}%1{✗%}"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})"
get_host() {
local _remote="$REMOTE_HOST"
local _remote_local="%{$fg_bold[$REMOTE_LOCAL_COLOR]%}local%{$reset_color%}"
local _remote_remote="%{$fg_bold[$REMOTE_REMOTE_COLOR]%}$_remote%{$reset_color%}"
local _remote_status="$_remote_remote"
if [[ -z "$_remote" ]]; then
_remote_status="$_remote_local"
fi
echo "($REMOTE_THEME_PROMPT : $_remote_status)"
}
REMOTE_LOCAL_COLOR="green"
REMOTE_REMOTE_COLOR="red"
if [[ -n "$ZSH_REMOTE" ]]; then
REMOTE_THEME_PROMPT="%{$fg_bold[blue]%}"
REMOTE_THEME_PROMPT+=$ZSH_REMOTE
REMOTE_THEME_PROMPT+="%{$reset_color%}"
else
REMOTE_THEME_PROMPT="%{$fg_bold[blue]%}Docker%{$reset_color%}"
fi
RPROMPT='$(get_host)'
기본 테마인 robbyrussell
코드를 이용해서 PROMPT
의 오른쪽을 설정할 수 있는 RPROMPT
를 선언했습니다.
💡 RPROMPT는 oh my zsh에 선언되어 있어서 해당 변수를 수정하면 PROMPT의 오른쪽에 출력을 할 수 있습니다!
여기서, 어떤 환경을 사용하고 있는지 모르기 때문에 REMOTE_HOST
, ZSH_REMOTE
환경변수를 이용했습니다. 그 결과 아래와 같이 환경변수의 값을 출력했습니다.
1
(ZSH_REMOTE : REMOTE_HOST)
속도개선
만약 zsh을 하고 git 디렉토리에 들어갈 때 너무 느리다면 다음의 명령어를 입력하면 됩니다.
1
2
$ git config --global oh-my-zsh.hide-status 1
$ git config --global oh-my-zsh.hide-dirty 1
This post is licensed under CC BY 4.0 by the author.