Post

shell prompt (bash, Oh My Zsh)

bash

Ctrl+Backspace로 단어 삭제하도록 만들기
1
2
3
+++ /etc/inputrc 또는 ~/.inputrc
"\C-h": backward-kill-word

이렇게 설정했는데 backspace만 눌러도 한 단어가 지워지는 경우?

더보기

  • backspace를 누르면 ^?(0x7f)를 보내도록 되어 있고, Ctrl+backspace를 누르면 ^H(0x08)을 보내도록 되어 있는게 일반적임
    • Ubuntu bash 터미널, mac의 iterm2는 이와 같은 식으로 키코드가 발생함
  • 그러나 xshell같은 SSH Client에서는 기본 backspace 키 시퀀스가 ^H로 설정돼 있어 이런 경우 그냥 backspace만 눌러도 1단어가 지워진다.
    • 기본 키 시퀀스를 ^?로 변경해주고, Ctrl+Backspace를 누르면 ^H를 보내도록 키 매핑해준다.
    • ^H를 발생시키는 키 코드는 \b * 발생 키 코드 확인은 showkey -a

Oh-my-zsh

1
2
brew install zsh zsh-completions

기본 쉘 zsh로 변경.

/etc/passwd 직접 변경하는 것 보단 이게 낫지.

1
2
chsh umbum -s /usr/bin/zsh

테마 목록 중 마음에 드는 것 설치

powerline 폰트는 아래 방식으로 설치하는게 젤 간단.

1
2
3
4
5
git clone<https://github.com/powerline/fonts.git>

cd fonts
./install.sh

zsh 플러그인
프롬프트 좌측에 virtualenv 상태 출력 프롬프트 추가
1
2
3
~/.zshrc
POWERLEVEL9K\_LEFT\_PROMPT\_ELEMENTS=(virtualenv context dir vcs)

default값이나, 추가적인 속성을 출력하는 프롬프트가 필요하다면 참고

https://github.com/bhilburn/powerlevel9k#prompt-customization

키바인딩

zsh line editor(zle)를 사용해서 한다.

1
2
3
4
5
6
7
8
9
10
11
zle -al     // 가능한 binding commands 출력
~/.zshrc
bindkey "^H" backward-kill-word   # Ctrl + Backspace  : option + Backspace  ## same with \C-H
bindkey "^[[1;5D" backward-word   # Ctrl + ← : option + ← ; default
bindkey "^[[1;5C" forward-word    # Ctrl + → : option + → ; default


bindkey "^[^?" backward-kill-line     # Alt + Backspace : command + Backspace
bindkey "^[[1;3D" beginning-of-line   # Alt + ← : command + ←
bindkey "^[[1;3C" end-of-line         # Alt + → : command + →

mac의 경우도 zshrc는 위 설정을 그대로 사용한다. 그래야 우분투로 ssh 붙었을 때 동일한 키코드가 입력되어 이런 단축키들을 사용할 수 있음.

item2 설정

그냥 설정 백업 파일 불러오면 됨. Load할 디렉토리만 지정해주면 알아서 불러온다.

  • option+del이 ^H발생시키도록 설정.
  • option + ←→이 Escape sequence [1;5D, [1;5C를 발생시키도록 설정.
  • Command + ←→가 탭이동으로 설정되어 있는 것 해제하고, 각각 Escape sequence [1;3D, [1;3C를 발생시키도록 설정.
  • command+del이 hex값 0x1b 0x7f를 발생시키도록 설정
This post is licensed under CC BY 4.0 by the author.