mac安装和配置ohmyzsh
1、ohmyzsh项目默认目录为 ~/.ohmyzsh ,github项目地址为:https://github.com/ohmyzsh/ohmyzsh
2、配置文件默认目录为 ~/.zshrc my zshrc save in github
3、安装ohmyzsh
1
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Copied!4、安装插件
https://github.com/zsh-users/zsh-syntax-highlighting ~/.oh-my-zsh/custom/plugins
1
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
Copied!https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins
1
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
Copied!
4、安装字体 font-hack-nerd-font
5、安装主题 dracula https://draculatheme.com/zsh
软连接方式
文件方式
我自己修改的 放在 ~/.oh-my-zsh/custom/themes/mydracula.zsh-theme
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224
# -*- mode: sh; -*- # vim: set ft=sh : # Dracula Theme v1.2.5 # # https://github.com/dracula/dracula-theme # # Copyright 2019, All rights reserved # # Code licensed under the MIT license # http://zenorocha.mit-license.org # # @author Zeno Rocha <hi@zenorocha.com> # @maintainer Avalon Williams <avalonwilliams@protonmail.com> # Initialization {{{ source ${0:A:h}/lib/async.zsh autoload -Uz add-zsh-hook setopt PROMPT_SUBST async_init PROMPT='' # }}} # Options {{{ # Set to 0 to disable the git status DRACULA_DISPLAY_GIT=${DRACULA_DISPLAY_GIT:-1} # Set to 1 to show the date DRACULA_DISPLAY_TIME=${DRACULA_DISPLAY_TIME:-1} # Set to 1 to show the 'context' segment DRACULA_DISPLAY_CONTEXT=${DRACULA_DISPLAY_CONTEXT:-0} # Changes the arrow icon DRACULA_ARROW_ICON=${DRACULA_ARROW_ICON:-➜} # Set to 1 to use an new line for commands DRACULA_DISPLAY_NEW_LINE=${DRACULA_DISPLAY_NEW_LINE:-0} # function to detect if git has support for --no-optional-locks dracula_test_git_optional_lock() { local git_version=${DEBUG_OVERRIDE_V:-"$(git version | cut -d' ' -f3)"} local git_version="$(git version | cut -d' ' -f3)" # test for git versions < 2.14.0 case "$git_version" in [0-1].*) echo 0 return 1 ;; 2.[0-9].*) echo 0 return 1 ;; 2.1[0-3].*) echo 0 return 1 ;; esac # if version > 2.14.0 return true echo 1 } # use --no-optional-locks flag on git DRACULA_GIT_NOLOCK=${DRACULA_GIT_NOLOCK:-$(dracula_test_git_optional_lock)} # }}} # Status segment {{{ # arrow is green if last command was successful, red if not, # turns yellow in vi command mode if (( ! DRACULA_DISPLAY_NEW_LINE )); then PROMPT+='%(1V:%F{yellow}:%(?:%F{green}:%F{red}))${DRACULA_ARROW_ICON} ' fi # }}} # Time segment {{{ dracula_time_segment() { if (( DRACULA_DISPLAY_TIME )); then if [[ -z "$TIME_FORMAT" ]]; then TIME_FORMAT="%-H:%M:%S" # check if locale uses AM and PM # if ! locale -ck LC_TIME | grep 'am_pm=";"' > /dev/null; then # TIME_FORMAT="%-I:%M%p" # fi fi print -P "%D{$TIME_FORMAT} " fi } PROMPT+='%F{green}%B$(dracula_time_segment)' # }}} # User context segment {{{ dracula_context() { if (( DRACULA_DISPLAY_CONTEXT )); then if [[ -n "${SSH_CONNECTION-}${SSH_CLIENT-}${SSH_TTY-}" ]] || (( EUID == 0 )); then echo '%n@%m ' else echo '%n ' fi fi } PROMPT+='%F{magenta}%B$(dracula_context)' # }}} # Directory segment {{{ PROMPT+='%F{blue}%B%c ' # }}} # Custom variable {{{ function custom_variable_prompt() { [[ -z $DRACULA_CUSTOM_VARIABLE ]] && return echo "$FG[008]$DRACULA_CUSTOM_VARIABLE " } PROMPT+='$(custom_variable_prompt)' # }}} # Async git segment {{{ dracula_git_status() { (( ! DRACULA_DISPLAY_GIT )) && return cd "$1" local ref branch lockflag (( DRACULA_GIT_NOLOCK )) && lockflag="--no-optional-locks" ref=$(=git $lockflag symbolic-ref --quiet HEAD 2>/tmp/git-errors) case $? in 0) ;; 128) return ;; *) ref=$(=git $lockflag rev-parse --short HEAD 2>/tmp/git-errors) || return ;; esac branch=${ref#refs/heads/} if [[ -n $branch ]]; then echo -n "${ZSH_THEME_GIT_PROMPT_PREFIX}${branch}" local git_status icon git_status="$(LC_ALL=C =git $lockflag status 2>&1)" if [[ "$git_status" =~ 'new file:|deleted:|modified:|renamed:|Untracked files:' ]]; then echo -n "$ZSH_THEME_GIT_PROMPT_DIRTY" else echo -n "$ZSH_THEME_GIT_PROMPT_CLEAN" fi echo -n "$ZSH_THEME_GIT_PROMPT_SUFFIX" fi } dracula_git_callback() { DRACULA_GIT_STATUS="$3" zle && zle reset-prompt async_stop_worker dracula_git_worker dracula_git_status "$(pwd)" } dracula_git_async() { async_start_worker dracula_git_worker -n async_register_callback dracula_git_worker dracula_git_callback async_job dracula_git_worker dracula_git_status "$(pwd)" } add-zsh-hook precmd dracula_git_async PROMPT+='$DRACULA_GIT_STATUS' ZSH_THEME_GIT_PROMPT_CLEAN=") %F{green}%B✔ " ZSH_THEME_GIT_PROMPT_DIRTY=") %F{yellow}%B✗ " ZSH_THEME_GIT_PROMPT_PREFIX="%F{cyan}%B(" ZSH_THEME_GIT_PROMPT_SUFFIX="%f%b" # }}} # Linebreak {{{ if (( DRACULA_DISPLAY_NEW_LINE )); then PROMPT+=$'\n' PROMPT+='%(1V:%F{yellow}:%(?:%F{green}:%F{red}))${DRACULA_ARROW_ICON} ' fi # }}} # define widget without clobbering old definitions dracula_defwidget() { local fname=dracula-wrap-$1 local prev=($(zle -l -L "$1")) local oldfn=${prev[4]:-$1} # if no existing zle functions, just define it normally if [[ -z "$prev" ]]; then zle -N $1 $2 return fi # if already defined, return [[ "${prev[4]}" = $fname ]] && return oldfn=${prev[4]:-$1} zle -N dracula-old-$oldfn $oldfn eval "$fname() { $2 \"\$@\"; zle dracula-old-$oldfn -- \"\$@\"; }" zle -N $1 $fname } # ensure vi mode is handled by prompt dracula_zle_update() { if [[ $KEYMAP = vicmd ]]; then psvar[1]=vicmd else psvar[1]='' fi zle reset-prompt zle -R } dracula_defwidget zle-line-init dracula_zle_update dracula_defwidget zle-keymap-select dracula_zle_update # Ensure effects are reset PROMPT+='%f%b'
Copied!
6、配置文件 ~/.zshrc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
# If you come from bash you might have to change your $PATH. export PATH=$HOME/bin:/usr/local/bin:$PATH # Path to your oh-my-zsh installation. export ZSH="$HOME/.oh-my-zsh" # Set name of the theme to load --- if set to "random", it will # load a random theme each time oh-my-zsh is loaded, in which case, # to know which specific one was loaded, run: echo $RANDOM_THEME # See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes #ZSH_THEME="agnoster" # ZSH_THEME="dracula" ZSH_THEME="mydracula" #ZSH_THEME="random" # Set list of themes to pick from when loading at random # Setting this variable when ZSH_THEME=random will cause zsh to load # a theme from this variable instead of looking in $ZSH/themes/ # If set to an empty array, this variable will have no effect. # ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) # Uncomment the following line to use case-sensitive completion. # CASE_SENSITIVE="true" # Uncomment the following line to use hyphen-insensitive completion. # Case-sensitive completion must be off. _ and - will be interchangeable. # HYPHEN_INSENSITIVE="true" # Uncomment one of the following lines to change the auto-update behavior # zstyle ':omz:update' mode disabled # disable automatic updates # zstyle ':omz:update' mode auto # update automatically without asking # zstyle ':omz:update' mode reminder # just remind me to update when it's time # Uncomment the following line to change how often to auto-update (in days). # zstyle ':omz:update' frequency 13 # Uncomment the following line if pasting URLs and other text is messed up. # DISABLE_MAGIC_FUNCTIONS="true" # Uncomment the following line to disable colors in ls. # DISABLE_LS_COLORS="true" # Uncomment the following line to disable auto-setting terminal title. # DISABLE_AUTO_TITLE="true" # Uncomment the following line to enable command auto-correction. # ENABLE_CORRECTION="true" # Uncomment the following line to display red dots whilst waiting for completion. # You can also set it to another string to have that shown instead of the default red dots. # e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f" # Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765) # COMPLETION_WAITING_DOTS="true" # Uncomment the following line if you want to disable marking untracked files # under VCS as dirty. This makes repository status check for large repositories # much, much faster. # DISABLE_UNTRACKED_FILES_DIRTY="true" # Uncomment the following line if you want to change the command execution time # stamp shown in the history command output. # You can set one of the optional three formats: # "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" # or set a custom format using the strftime function format specifications, # see 'man strftime' for details. HIST_STAMPS="yyyy-mm-dd" # Would you like to use another custom folder than $ZSH/custom? # ZSH_CUSTOM=/path/to/new-custom-folder # Which plugins would you like to load? # Standard plugins can be found in $ZSH/plugins/ # Custom plugins may be added to $ZSH_CUSTOM/plugins/ # Example format: plugins=(rails git textmate ruby lighthouse) # Add wisely, as too many plugins slow down shell startup. # zsh-syntax-highlighting:~/.oh-my-zsh/custom/plugins,https://github.com/zsh-users/zsh-syntax-highlighting # zsh-autosuggestions:~/.oh-my-zsh/custom/plugins,https://github.com/zsh-users/zsh-autosuggestions plugins=( git colored-man-pages # macos # 以下需要自己安装 #~/.oh-my-zsh/custom/plugins,https://github.com/zsh-users/zsh-syntax-highlighting zsh-syntax-highlighting #~/.oh-my-zsh/custom/plugins,https://github.com/zsh-users/zsh-autosuggestions zsh-autosuggestions #brew install autojump autojump ) source $ZSH/oh-my-zsh.sh # User configuration # export MANPATH="/usr/local/man:$MANPATH" # You may need to manually set your language environment # export LANG=en_US.UTF-8 # Preferred editor for local and remote sessions # if [[ -n $SSH_CONNECTION ]]; then # export EDITOR='vim' # else # export EDITOR='mvim' # fi # Compilation flags # export ARCHFLAGS="-arch x86_64" # Set personal aliases, overriding those provided by oh-my-zsh libs, # plugins, and themes. Aliases can be placed here, though oh-my-zsh # users are encouraged to define aliases within the ZSH_CUSTOM folder. # For a full list of active aliases, run `alias`. # # Example aliases # alias zshconfig="mate ~/.zshrc" # alias ohmyzsh="mate ~/.oh-my-zsh" # 去重 zsh_history #setopt HIST_IGNORE_ALL_DUPS #setopt HIST_IGNORE_SPACE # proxy #alias setproxy="export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890" #alias unproxy="unset http_proxy;unset https_proxy;unset ALL_PROXY" # git-proxy #alias gitProxy="git config --global http.proxy socks5://127.0.0.1:7890;git config --global https.proxy socks5://127.0.0.1:7890" #alias gitUnproxy="git config --global --unset http.proxy;git config --global --unset https.proxy" # 上面alias舍弃,代理用自定义函数方式去做 # maven export MAVEN_HOME=~/Data/Software/apache-maven-3.6.3 export PATH=$MAVEN_HOME/bin:$PATH # java export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_321.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH # brew 清华镜像源 export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git" export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git" export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles" # brew命令 alias brewtree="brew deps --tree --installed" alias brewlist="brew leaves | xargs brew deps --installed --for-each | sed 's/^.*:/$(tput setaf 4)&$(tput sgr0)/'" # java多版本 export PATH="$HOME/.jenv/bin:$PATH" eval "$(jenv init -)" # ls颜色和图标 alias ls="lsd" # alias ll="lsd -lh" # alias l="lsd -alh" # bat主题 export BAT_THEME="Dracula" # python alias python2='/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7' alias python3='/usr/local/opt/python@3.10/bin/python3' alias python=python3 alias pips='/usr/bin/pip3' alias pip='/usr/local/opt/python@3.10/bin/pip3' # top替代 alias btop="bpytop" # tree颜色 alias trees="\tree -C" # 加载自定义函数 alias au="autoload -U" fpath+=~/Data/Config/my-functions autoload -U setproxy unproxy getproxy # 重载配置文件 alias rr="echo 'reloading...'&&source ~/.zshrc"
Copied!7、其他安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
# https://nodejs.org/en/ brew install node # https://npmmirror.com 阿里镜像源 npm install -g cnpm --registry=https://registry.npmmirror.com # https://github.com/bchatard/alfred-jetbrains alfred流 npm install -g @bchatard/alfred-jetbrains # https://picgo.github.io/PicGo-Core-Doc/zh/guide/ 图片上传 npm install picgo -g # https://tldr.sh 替代man npm install -g tldr # https://github.com/wting/autojump j跳转 brew install autojump # https://github.com/sharkdp/bat 替代cat brew install bat # https://github.com/aristocratos/bpytop 替代top brew install bpytop # https://github.com/bcicen/ctop 容器资源利用情况 brew install ctop # https://github.com/muesli/duf 磁盘空间 brew install duf # https://github.com/nicolargo/glances 服务 代替top brew install glances # https://github.com/hishamhm/htop 代替top brew install htop # https://github.com/jenv/jenv java版本管理 brew install jenv jenv doctor jenv versions jenv local 11.0.2 # https://github.com/Peltoche/lsd 代替ls brew install lsd # lsof brew install lsof # nginx brew install nginx # https://github.com/tmux/tmux brew install tmux # tree brew install tree # 文件搜索 https://github.com/ggreer/the_silver_searcher # ag -g filename ./ brew install the_silver_searcher # https://github.com/junegunn/fzf 文件查询 # 可以用来查找任何 列表 内容,文件、Git 分支、进程等 预览 # fzf、ctrl+T:显示下拉列表; ctrl+R:显示历史命令; ctrl+g:回到首行;cd \ <TAB>:模糊匹配 brew install fzf # 文件名搜索 https://github.com/sharkdp/fd brew install fd # markdown https://github.com/charmbracelet/glow brew install glow # https://github.com/skywind3000/z.lua # clone z.lua 到 ~/Data/Software/z.lua brew install trash #rm 废纸篓
Copied!8、自定义函数 ~/Data/Config/my-functions目录下
getproxy
setproxy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
if [ "$1" != "git" ] && [ "$1" != "ssh" ] && [ "$1" != "all" ] ; then echo 输入不符合要求 fi if [ "$1" = "git" ] || [ "$1" = "all" ]; then echo "set git proxy ......" git config --global http.proxy socks5://127.0.0.1:7890 git config --global https.proxy socks5://127.0.0.1:7890 fi if [ "$1" = "ssh" ] || [ "$1" = "all" ]; then echo "set ssh proxy ......" export https_proxy=http://127.0.0.1:7890 export http_proxy=http://127.0.0.1:7890 export all_proxy=socks5://127.0.0.1:7890 export HTTPS_PROXY=http://127.0.0.1:7890 export HTTP_PROXY=http://127.0.0.1:7890 export ALL_PROXY=socks5://127.0.0.1:7890 fi
Copied!unproxy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
if [ "$1" != "git" ] && [ "$1" != "ssh" ] && [ "$1" != "all" ] ; then echo 输入不符合要求 fi if [ "$1" = "git" ] || [ "$1" = "all" ]; then echo "unset git proxy ......" git config --global --unset http.proxy socks5://127.0.0.1:7890 git config --global --unset https.proxy socks5://127.0.0.1:7890 fi if [ "$1" = "ssh" ] || [ "$1" = "all" ]; then echo "unset ssh proxy ......" unset https_proxy unset http_proxy unset all_proxy unset HTTPS_PROXY unset HTTP_PROXY unset ALL_PROXY fi
Copied!