ZSH에서 물고기까지
.zshrc
. 최근에 저는 ZSH를 기본 셸로 사용하는 MacBook Pro 작업을 시작했습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다..zshrc
구성에는 Fish 셸이 대부분 기본적으로 제공하는 oh-my-zsh
의 일부 플러그인과 구성이 있습니다. 이를 염두에 두고 현재
.zshrc
를 변환하는 동안 얼마나 빨리 Fish shell로 마이그레이션할 수 있는지 알고 싶었습니다.생선 껍질 🐠
준비하기
내
.zshrc
구성은 다음과 같습니다.# ---- ZSH ---- #
export ADOTDIR="$HOME/.antigen"
# Source antigen zsh plugin manager
source $HOME/.antigenrc
antigen init
# Autosuggestion color highlight
export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#F2F0F6,underline"
export ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=30
# History settings.
export HISTSIZE=1000000
export HISTCONTROL='ignoreboth'
export HISTORY_IGNORE="(clear|history)"
SAVEHIST=$HISTSIZE
# Add wisely, as too many plugins slow down shell startup.
plugins=(copyfile
extract
git-extras
git-flow-avh
zsh-autosuggestions
zsh-completions
zsh-syntax-highlighting
colored-man-pages
z)
# ------------- #
# ---- User Configuration ---- #
## Nix specific
export NIX_PATH=darwin-config=$HOME/.nixpkgs/darwin-configuration.nix:$HOME/.nix-defexpr/channels${NIX_PATH:+:}$NIX_PATH
source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
source /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
eval "$(starship init zsh)"
# Leave less preview on screen when quit
export LESS="-RX"
export EDITOR='nvim'
export LESS_TERMCAP_md="${yellow}"
# ---------------------------- #
# ---- Alias ---- #
alias vim="nvim"
alias l="exa --long --header --all"
alias ls="exa --long --header"
alias tree="exa --tree --level=2"
alias cat="bat"
alias ping="ping -c 3"
# Add verbose output on these commands
alias rm="rm -v"
alias mkdir="mkdir -v"
alias mv="mv -v"
alias cp="cp -v"
# --------------- #
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"
설정
Fish 및 Fisher(Fish용 플러그인 관리자) 설치:
brew install fish fisher
물고기 구성은
~/.config/fish
에 있습니다. 이제 fish
명령을 사용하여 생선 껍질을 활성화하여 시작할 수 있습니다.별명
별칭을 변환하려면 별칭을 붙여넣고
funcsave
를 사용하여 ~/.config/fish/functions
에 저장합니다.alias cp="cp -v"
alias mv="mv -v"
...
funcsave cp mv ...
ENV 변수
용도Universal Variables :
set -Ux EDITOR "nvim"
...
플러그인
Fisher를 사용하여 몇 가지 유용한 플러그인을 설치합니다.:
fisher install jethrokuan/z # Jump around the folders
fisher install decors/fish-colored-man
fisher install oh-my-fish/plugin-peco # Ctrl + R for searching history
fisher install oh-my-fish/plugin-extract
일부 Fish 플러그인은 기본적으로 활성화되어 있으며 ZSH에서와 같이 설정할 필요가 없습니다.
또한 내
.zshrc
를 변환하는 동안 유용한 아래 플러그인을 찾았습니다(필요하지 않을 수도 있음).fisher install reitzig/sdkman-for-fish
fisher install lilyball/nix-env.fish
fisher install jorgebucaran/nvm.fish
즉각적인
Starship에 대한 구성이 자동으로 적용되도록 "Cross-Shell Prompt"인 Starship을 사용합니다. 활성화하려면 다음을 사용하십시오.
echo "starship init fish | source" >> $HOME/.config/fish/config.fish
결과
벤치마크
처음 실행 시 초미세를 사용하여 Fish가 ZSH보다 어느 정도 빠르다는 것을 알았습니다.
두 쉘이 시작하는 데 왜 그렇게 많은 시간이 걸리는지 궁금했습니다. 두 셸을 모두 프로파일링한 결과 SDKMan 활성화(NVM과 유사한 여러 Java 배포판 관리)로 인해 둘 다 성능 저하가 있음을 알아냈습니다.
두 셸 모두에서 SDKMan이 제거되면 벤치마크를 다시 실행했습니다.
내 설정에서 두 셸이 거의 비슷하기 때문에 Fish 셸은 ZSH보다 3배 빠르게 실행되었습니다.
이익
이제 Fish를 사용하여 쉘 구성이 더 체계적으로 구성되어 있습니다. Fish 스크립트의 구문은 ZSH/Bash 스크립트에 비해 훨씬 더 읽기 쉽습니다. 유용하다고 생각되는 다른 눈에 띄는 기능:
fish_update_completions
) CTRL
+ R
페코로 간편하게 히스토리 검색 잡았다
구성 변환이 매우 빠르긴 했지만 다음 작업에 많은 시간을 할애했습니다.
(예:
curl
) 파산 fish_history
파일. 이 도구는 작동하지만 수동으로 오류를 수정해야 할 수 있습니다. export
를 사용하여 특정 ENV 변수를 내보냈기 때문에 Fish와 함께 실행하면 오류가 발생했습니다. 결론
이 상태에서 저는 ZSH에서 Fish로 정말 빠르게 마이그레이션했고 동일한 구성을 유지하면서 기본 셸로 설정했습니다. 내가 부딪힌 문제 없이 변환 시간은 10분 미만이었습니다. 새 플러그인과 Fish가 기본적으로 제공하는 다른 플러그인을 사용하여 이제 쉘이 훨씬 빨라졌습니다.
마지막으로 해보시길 권합니다. 작동하지 않으면 언제든지 이전 구성으로 돌아갈 수 있습니다.
Reference
이 문제에 관하여(ZSH에서 물고기까지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dinkopehar/from-zsh-to-fish-233o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)