본문 바로가기
IT

개발자라면 터미널부터 꾸며야지 - 맥북 터미널 꾸미기(명령어 멀티라인으로 작성하기 / 명령어 다음 줄에 입력하기)

by 유크라테스 2023. 6. 26.
반응형

맥북 터미널 꾸미기

싱글 라인으로 작성할 때에 불편한 점

폴더 경로 및 폴더명과 브랜치명이 한 줄로 표현되고 있기에 폴더명이나 브랜치 명이 길어지게 되면 명령어를 입력하는 커서가 그만큼 오른쪽으로 밀려 가독성이 떨어지고 작성하는데에 불편함이 있었습니다.

터미널 창을 크게 키우는 방법도 있지만 듀얼 모니터가 아닌 단일 노트북만을 사용할 때 화면 공간에 제약이 있기에 이 방법은 100% 만족시키기 어려운 해결 방법인 것 같습니다.

 

따라서 터미널 창이 작더라도 개행을 하여 커맨드를 다음 줄에 입력하게 된다면 불편함이 줄어들 것 같아 다음 줄에 커맨드를 입력하는 방법을 공유해드리려고 합니다.

수정 전 터미널

명령어 다음 줄에 입력하기 (싱글라인에서 멀티라인 적용하기)

먼저 아래 명령어를 입력하여 zsh 테마의 수정파일을 열어줍니다. 

# agnoster 테마일 경우
vi ~/.oh-my-zsh/themes/agnoster.zsh-theme

# 다른 테마일 경우
vi ~/.oh-my-zsh/themes/(테마명).zsh-theme

커서를 맨 아래로 내리면 아래와 같은 코드가 있을 텐데 키보드의 i를 눌러 수정 모드로 진입 한 뒤 prompt_newline을 추가해줍니다.
(prompt_hgprompt_end 사이에 작성해줍니다.)

## Main prompt
build_prompt() {
  RETVAL=$?
  prompt_status
  prompt_virtualenv
  prompt_aws
  prompt_context
  prompt_dir
  prompt_git
  prompt_bzr
  prompt_hg
  prompt_newline	⬅️
  prompt_end
}

코드 적용

그 후 터미널 맨 아래에 아래 코드를 복사하여 prompt_newline() 함수를 추가해준 후 ESC + :wq + ENTER를 눌러 저장하고 종료해줍니다.

prompt_newline() {
  if [[ -n $CURRENT_BG ]]; then
    echo -n "%{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR
%{%k%F{blue}%}$SEGMENT_SEPARATOR"
  else
    echo -n "%{%k%}"
  fi

  echo -n "%{%f%}"
  CURRENT_BG=''
}

함수 적용

터미널을 껐다가 다시 켜시거나 아래 명령어를 입력하시면 설정이 적용된 것을 확인하실 수 있습니다.

source ~/.zshrc

설정 완료 터미널

 

멀티라인을 적용하지 않아도 큰 문제는 없지만 사소하고 작은 불편함을 해결한다면 일의 능률이 조금이나마 올라가지 않을까 생각이 듭니다!

궁금한 점은 댓글 남겨주세요😁

 

 

⭐️ (참고) prompt_newline 함수 분석하기

설정 적용할 때 prompt_newline 함수를 추가해주었는데 설정 적용하는데에 각 라인들이 무엇을 의미하는지 몰라도 되지만 적용할 당시의 저는 어떤 의미일까 궁금했고 저처럼 궁금하신 분들을 위해 함수 분석한 내용 공유해드립니다!

prompt_newline() {
  if [[ -n $CURRENT_BG ]]; then
    echo -n "%{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR
%{%k%F{blue}%}$SEGMENT_SEPARATOR"
  else
    echo -n "%{%k%}"
  fi

  echo -n "%{%f%}"
  CURRENT_BG=''
}
  1. iif [[ -n $CURRENT_BG ]]; then
    • CURRENT_BG 변수가 비어있지 않은 경우를 확인합니다.
    • [[ -n $CURRENT_BG ]]는 CURRENT_BG 변수가 비어있지 않으면 참(True)을 반환합니다.
  2. echo -n "%{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR" 
    • 조건문이 true일 경우 실행합니다.
    • 프롬프트에 배경색과 세그먼트 구분자를 출력하는 역할입니다.
    • %{%k%F{$CURRENT_BG}%}CURRENT_BG 변수에 저장된 배경색을 설정합니다. $SEGMENT_SEPARATOR는 세그먼트 구분자로 출력됩니다.
    • %{%k%F{blue}%}$SEGMENT_SEPARATOR는 블루 컬러로 지정된 세그먼트 구분자를 출력합니다.
  3. echo -n "%{%k%}"
    • 조건문이 false일 경우 실행됩니다.
    • 기본 배경색으로 설정됩니다.
  4. fi
    • bash 셸에서 조건문(if문)의 끝을 명시적으로 나타내는 예약어입니다.
    • if 문은 if와 then으로 시작하고 조건을 나타내는 표현식이 true인 경우에 실행할 코드 블록이 들어옵니다. 이후 fi로 조건문을 닫아줍니다.
  5. echo -n "%{%f%}"
    • 이전에 설정된 색상을 초기화합니다.
  6. URRENT_BG=''
    • CURRENT_BG 변수를 비워서 초기화합니다.
반응형