Oh-My-Zsh
2023年03月25日
一、认识
二、安装
1. 下载 ohmyzsh
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
2. 下载 powerlevel10k
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
三、插件
3.1 git
git: 可以使用各种 git
命令缩写
配置
plugins=(其他的插件 git)
3.2 zsh-autosuggestions
zsh-autosuggestions, 效率神器, 输入命令时,会给出建议的命令(灰色部分)按键盘 → 补全
安装
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
配置
在 ~/.zshrc 中配置
plugins=(其他的插件 zsh-autosuggestions)
生效
使配置生效
source ~/.zshrc
3.3 zsh-syntax-highlighting
zsh-syntax-highlighting, 平常用的ls
、cd
等命令输入正确会绿色高亮显示,输入错误会显示其他的颜色。
安装
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
配置
在 ~/.zshrc 中配置
plugins=(其他的插件 zsh-syntax-highlighting)
生效:
使配置生效
source ~/.zshrc
四、字体
-
下载字体: 字体网址为 https://www.nerdfonts.com/
Preview -
选择字体: 个人推荐使用
DejaVuSansM Nerd Font
字体Preview -
安装字体
-
配置
ZSH
字体:Preview -
配置
VsCode
字体: 用户配置settings.json
中添加如下配置项"terminal.integrated.fontFamily": "DejaVuSansM Nerd Font",
五、完整配置
eval $(/opt/homebrew/bin/brew shellenv)
export ZSH=$HOME/.oh-my-zsh
ZSH_THEME="powerlevel10k/powerlevel10k"
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
source $ZSH/oh-my-zsh.sh
function getIPV4() {
local ip
ip=$(ipconfig getifaddr en0 2>/dev/null || ipconfig getifaddr en1 2>/dev/null || echo 'No IP')
echo "$ip"
}
function prompt_my_ip() {
local ip
ip=$(getIPV4)
[[ "$ip" != "No IP" ]] && echo -n "%{$fg[208]%}$ip%{$reset_color%}"
}
POWERLEVEL9K_CUSTOM_MY_IP="prompt_my_ip"
COLOR=(
004
006
007
)
COLOR_ARRAY=(
004 067 059
006 073 109
007 249 240
)
THEME_COLOR=1
DEFAULT_BACKGROUND=235
DEFAULT_FOREGROUND="${COLOR[$(( $THEME_COLOR + 1 ))]}"
POWERLEVEL9K_MODE="nerdfont-complete"
POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="%F{$DEFAULT_FOREGROUND}╭─"
POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\ue0b4'
POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\ue0b4'
POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\ue0b0'
POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="%F{$DEFAULT_FOREGROUND}╰─%F{${COLOR_ARRAY[$(( $THEME_COLOR * 3 + 2 ))]}}\uf054%F{$DEFAULT_FOREGROUND}\uf054"
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION=$'\uf054'
typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=124
typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=70
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os-icon dir vcs newline prompt_char)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status time custom_my_ip)
POWERLEVEL9K_VCS_CLEAN_BACKGROUND="green"
POWERLEVEL9K_VCS_CLEAN_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_VCS_MODIFIED_BACKGROUND="yellow"
POWERLEVEL9K_VCS_MODIFIED_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=166
POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_DIR_HOME_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_DIR_HOME_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_DIR_HOME_SUBFOLDER_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_DIR_HOME_SUBFOLDER_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_SHORTEN_DIR_LENGTH=40
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_absolute"
POWERLEVEL9K_SHORTEN_DELIMITER='...'
POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=240
POWERLEVEL9K_STATUS_OK_FOREGROUND="green"
POWERLEVEL9K_STATUS_OK_BACKGROUND="$(( $DEFAULT_BACKGROUND + 4 ))"
POWERLEVEL9K_STATUS_ERROR_FOREGROUND="red"
POWERLEVEL9K_STATUS_ERROR_BACKGROUND="$(( $DEFAULT_BACKGROUND + 4 ))"
POWERLEVEL9K_HISTORY_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_HISTORY_BACKGROUND="$(( $DEFAULT_BACKGROUND + 2 ))"
POWERLEVEL9K_VIRTUALENV_BACKGROUND="$(( $DEFAULT_BACKGROUND - 2 ))"
POWERLEVEL9K_VIRTUALENV_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_OS_ICON_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_OS_ICON_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_TIME_FORMAT="%D{%T}"
POWERLEVEL9K_TIME_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_TIME_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BACKGROUND_JOBS_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_ROOT_ICON=$'\uF198'
POWERLEVEL9K_SSH_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_SSH_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_SSH_ICON="\uF489"
POWERLEVEL9K_HOST_LOCAL_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_HOST_LOCAL_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_HOST_REMOTE_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_HOST_REMOTE_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_PUBLIC_IP_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_PUBLIC_IP_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_CUSTOM_MY_IP_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_CUSTOM_MY_IP_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_LOAD_CRITICAL_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_LOAD_WARNING_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_LOAD_NORMAL_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND="red"
POWERLEVEL9K_LOAD_WARNING_FOREGROUND="yellow"
POWERLEVEL9K_LOAD_NORMAL_FOREGROUND="green"
POWERLEVEL9K_LOAD_CRITICAL_VISUAL_IDENTIFIER_COLOR="red"
POWERLEVEL9K_LOAD_WARNING_VISUAL_IDENTIFIER_COLOR="yellow"
POWERLEVEL9K_LOAD_NORMAL_VISUAL_IDENTIFIER_COLOR="green"
POWERLEVEL9K_BATTERY_LEVEL_BACKGROUND_COLOR="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BATTERY_CHARGING_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BATTERY_CHARGED_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BATTERY_DISCONNECTED_BACKGROUND="$DEFAULT_BACKGROUND"
function prompt_user() {
p10k segment -b $DEFAULT_BACKGROUND -f $DEFAULT_FOREGROUND -i $'\uf2be' +r -t '%n'
}
function prompt_device() {
p10k segment -b "$(( $DEFAULT_BACKGROUND + 2 ))" -f $DEFAULT_FOREGROUND -i $'\uf108' +r -t '%m'
}
DISABLE_AUTO_TITLE=true
precmd(){
echo -en "\033]0; `basename $PWD` \007"
}
export NVM_DIR="$HOME/.nvm"
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"
[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && \. "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"
PATH=$PATH:/usr/local/mysql/bin
alias cdBlog="cd ~/bolawen/blog-docusaurus-webpack"
alias cdResource="cd ~/bolawen/resource/"
alias cdPractice="cd ~/bolawen/practice/"
alias cdScript="cd ~/bolawen/scripts"
export PATH="/opt/homebrew/Cellar/kafka/3.9.0/bin:$PATH"
export all_proxy=http://127.0.0.1:7890