Linux Terminal 설정
1. Zsh
1.1. Zsh 설치
sudo apt install zsh
sudo chsh -s /bin/zsh
sudo chsh -s /bin/zsh 아이디
재부팅
2. Oh-my-zsh
2.1. 설치
curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh
2.2. Theme 설정
~/.zshrc에서 테마를 변경한다.
ZSH_THEME="agnoster"
~/.oh-my-zsh/themes/agnoster.zsh-theme에서 prompt의 사용자 명을 지운다.
prompt_context(){}
~/.oh-my-zsh/themes/agnoster.zsh-theme의 ## Main prompt에 다음을 추가하여 multi-line command를 설정한다.
(prompt_newline는 parser문제로 여기에 붙여넣기 불가.)
# 멀티라인 적용, 커버모양 변경
## Main prompt
build_prompt() {
RETVAL=$?
prompt_status
prompt_virtualenv
prompt_context
prompt_dir
prompt_git
prompt_bzr
prompt_hg
prompt_newline # 멀티라인 적용
prompt_end
}
2.3. FZF
sudo apt install fd-find
sudo apt install ripgrep
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install
.zshrc에 아래 내용을 추가한다.
alias fd=fdfind
export FZF_DEFAULT_COMMAND="fdfind"
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
export FZF_ALT_C_COMMAND="fdfind -t d . $HOME"
~/.fzf/shell/key-bindings.zsh에서 find를 fd로 변경한다.
2.4. Plugin 설치
# zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
# zsh-autosuggestions
git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
# zsh-vim
git clone https://github.com/softmoth/zsh-vim-mode.git $ZSH_CUSTOM/plugins/zsh-vim-mode
# autojump
sudo apt install autojump
plugins=(
git
zsh-syntax-highlighting
zsh-autosuggestions
zsh-vim-mode
autojump
)
3. Tmux
3.1. 설치
sudo apt install tmux
3.2. vim 모드 설정
~/.tmux.conf에 저장한다. (ref)
3.3. zsh 실행 시 tmux 자동 연결
~/.zshrc plugins 밑에 다음을 추가한다.
if command -v tmux &> /dev/null && [ -n "$PS1" ] && [[ ! "$TERM" =~ screen ]] && [[ ! "$TERM" =~ tmux ]] && [ -z "$TMUX" ]; then
exec tmux
fi
4. 폴더 변경 시 venv 자동 activate
cd 명령 시 폴더 내에 venv 폴더가 있을 경우 Conda env와 다른 venv를 deactivate하고 현재 폴더의 venv를 활성화 한다.(ref)
# >>> CD for virtual environment >>>
vcd() {
folder_input=$1
if [[ $folder_input != "" ]]; then
case $folder_input in
".." ) cd .. && return;;
"-" ) cd - && return;;
"/" ) cd / && return;;
* ) cd "$folder_input" || return;;
esac
# activate venv
path_activate="$(pwd)/venv/bin/activate"
if [[ -f $path_activate ]]; then
# deactivate any existing virtual env
[[ $VIRTUAL_ENV ]] && deactivate
# deactivate any existing conda env
[[ $CONDA_PROMPT_MODIFIER ]] && conda deactivate
source $path_activate;
fi
# activate venv end
fi
}
alias cd=vcd
# <<< CD for virtual environment <<<
# >>> command for activate conda >>>
aconda(){
[[ $VIRTUAL_ENV ]] && deactivate
source ~/anaconda3/bin/activate
}
# <<< command for activate conda <<<