Prompt expansion

prompt 형식(format)은 PROMPT라는 환경변수에 의해 결정된다.

$ echo $PROMPT

%n@%m %1~ %#이 출력되었다. PROMPT는 prompt expansion 방식으로 지정된 양식을 출력한다. 여기서 expansion은 문자의 의미를 확장함을 의미한다. %가 escapte character로 사용된다.

  • %K - 텍스트 색 지정(different color mode on) => %K{blue}
  • %F - %K와 비슷하다. 색을 지정할 수 있다. {} 안에 숫자를 입력할 수 있다.
  • %f - different color mode off
  • %n - username 출력
  • %m - hostname의 첫 번째 ‘.’ 앞까지의 문자열
  • %B - boldface mode 시작
  • % - prompt symbol 출력
  • 나머지

example

~/.vimrc

export PROMPT="%(?..%F{red}%?)%f %B%1~%f%b %B$ "
  • ? - 이전 명령이 성공했으면 True(0이면 성공, 나머지는 실패)
  • . - 조건문을 구성

결과

결과

github branch 정보 출력

Hooks

Hooks란 shell에서 특정 이벤트가 발생했을 때 자동으로 실행되는 함수 목록(배열)이다. chpwd, precmd, preexc, 그리고zshaddhistory가 자주사용되는 hooks이다.
precmd - prompt가 출력되기 전에 실행된다. 주로 $PROMPT의 값을 설정하기 위해 사용한다. preexc - command prompt에서 enter 키를 누른 뒤, 명령어가 실행되기 전에 실행된다.

[예제] Set $PROMPT in precmd

~/.vimrc

  1. VCS(Version Control System) 정보 가져오기
    autoload -Uz vcs_info
    precmd() { vcs_info }
    zstyle ':vcs_info:git:*' formats 'on %b'
    

reference

Comments