Bash를 쓰다 요즘은 Zsh를 많이 쓴다고 해서 MSYS2를 설치하고 Zsh설치.
Zsh설치를 위해 MSYS2로 이전했는데 패키지 관리가 가능해 기능 추가가 수월한게 엄청 큰 장점. 최근 git 패키지에 iconv 실행파일이 빠져 단독 패키지를 구해 설치했는데 여기선 pacman으로 간단히 설치 가능.
따로 개발을 위한게 아니라 POSIX 호환 쉘 환경만 원한것이라 추가설치 없이 기본으로 설치된 MSYS환경이면 충분.
쉘은 Zsh를 설치하고 oh-my-zsh 프레임웍과 테마를 설치했는데 속도와 편의성의 트레이드 오프가 심해 삭제하고 순정 Zsh와 많이 쓰는 플러그인 2개만 추가 설치.
며칠 쓰며 체험해보니 cli환경에서 편의성은 월등하고 속도도 빨라 여기 정착하기로 함.
** MSYS2와 Zch설치
https://www.msys2.org에서 x86_64버전으로 다운로드
설치 완료 후 Run MSYS2 now 체크하고 Finish
MSYS2 터미널에서 초기 업데이트
pacman
-Syu
pacman
-Su
pacman
-S base-devel git zsh wget w3m curl vim tree iconv
ucrt64 패키지(neovim,fzf,fd,ripgrep,bat)
pacman -S mingw-w64-ucrt-x86_64-neovim mingw-w64-ucrt-x86_64-fzf mingw-w64-ucrt-x86_64-fd mingw-w64-ucrt-x86_64-ripgrep mingw-w64-ucrt-x86_64-bat
홈 디렉토리 변경
vim /etc/nsswitch.conf
db_home: cygwin desc >> db_home: windows
zsh 플러그인 설치
git
clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions
git
clone https://github.com/zsh-users/zsh-syntax-highlighting ~/.zsh/zsh-syntax-highlighting
Windows Terminal 프로필 등록
{
"closeOnExit": "always",
"colorScheme": "One Half Dark",
"commandline": "C:\\msys64\\msys2_shell.cmd -defterm -here -no-start -ucrt64 -shell zsh",
"font":
{
"face": "Sarasa Fixed K",
"size": 12,
"weight": "bold"
},
"guid": "{ 파워셀에서 [guid]::NewGuid()실행후 GUID 복사 }",
"hidden": false,
"historySize": 5000,
"icon": "C:\\msys64\\msys2.ico",
"name": "Zsh",
"opacity": 85,
"scrollbarState": "hidden",
"snapOnInput": true,
"startingDirectory": null
}
~/.zshrc
# environment
export LANG=ko_KR.UTF-8
export EDITOR=vim
# prompt
if net session >/dev/null 2>&1; then
PS1='%B%F{red}%n@%m:%~# %f%b'
else
PS1='%B%F{green}%n@%m:%~%# %f%b'
fi
# completion
autoload -Uz compinit
compinit -u -C
zstyle ':completion:*' matcher-list 'm:{a-zA-Z-_}={A-Za-z_-}'
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
zstyle ':completion:*' menu select
zstyle ':completion:*' squeeze-slashes true
zstyle ':completion:*' special-dirs true
zstyle ':completion:*' fake-files '/:c m s t y z'
# autosuggestions
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
# syntax-highlighting
source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
# fzf key bindings + completion
source /ucrt64/share/fzf/key-bindings.zsh
# history
HISTSIZE=5000
SAVEHIST=10000
HISTFILE=~/.zsh_history
setopt INC_APPEND_HISTORY HIST_IGNORE_DUPS HIST_IGNORE_ALL_DUPS \
HIST_IGNORE_SPACE CORRECT AUTO_CD NO_BEEP
# vi mode + cursor
bindkey -v
bindkey -M viins 'jk' vi-cmd-mode
bindkey -M viins '^I' menu-complete
bindkey -M viins '^[[Z' reverse-menu-complete
function zle-keymap-select { [[ $KEYMAP == vicmd ]] && echo -ne '\e[2 q' || echo -ne '\e[5 q' }
function zle-line-init { echo -ne '\e[5 q' }
zle -N zle-keymap-select
zle -N zle-line-init
autoload -Uz edit-command-line
zle -N edit-command-line
bindkey -M vicmd 'v' edit-command-line
# aliases
alias ..='cd ..'
alias ...='cd ../..'
alias l='ls'
alias ll='ls -alF'
alias la='ls -A'
alias lsize='ls -lhS'
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias vim='/c/Program\ Files/Vim/vim92/vim'
alias v='/usr/bin/vim -c "20Lex" -c "wincmd w"'
alias mkdir='mkdir -pv'
alias du1='du -h --max-depth=1'
alias df='df -h'
alias free='free -h'
alias reload="source ~/.zshrc"
alias zconf="vim ~/.zshrc"
alias vconf="v ~/.vimrc ~/_vimrc"
# git aliases
alias gs='git status'
alias ga='git add'
alias gaa='git add --all'
alias gcm='git commit -m'
alias gcmm='git commit -m "backup: $(date +%y-%m-%d\ %H:%M:%S)"'
alias gca='git commit --amend'
alias gp='git push'
alias gpl='git pull'
alias gsw='git switch'
환경변수 Path:
c:\msys64\usr\bin
c:\msys64\ucrt64\bin
원격에서 로그인쉘 계정 지정하기:
C:\ProgramData\ssh\sshd_config에 아래 내용 추가
Match User 유저계정명
ForceCommand C:/msys64/usr/bin/zsh.exe -l