# ========================================== # 1. 环境变量 (Environment Variables) # ========================================== # --- 代理配置 --- export all_proxy=socks5://127.0.0.1:7890 export http_proxy=http://127.0.0.1:7890 export https_proxy=http://127.0.0.1:7890 export HTTP_PROXY=http://127.0.0.1:7890 export HTTPS_PROXY=http://127.0.0.1:7890 # --- Homebrew 配置 --- export HOMEBREW_API_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/api" export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles" export HOMEBREW_NO_AUTO_UPDATE=1 export HOMEBREW_NO_INSTALL_CLEANUP=1 # --- 开发环境 --- export EDITOR='nvim' export CLICOLOR='Yes' export LSCOLORS='CxfxcxdxbxegedabagGxGx' export BAT_THEME="TwoDark" export NODE_VERSION=$(node -v) # --- Docker 配置 --- export DOCKER_BUILDKIT=1 export DOCKER_CONTENT_TRUST=1 # --- 注释的 API Keys(按需启用) --- # # Neovim AI 补全 # export OPENAI_API_KEY="sk-BxgRxTsLAZyLAktAB0Cc3e9bF9554cEc952cF0C8A7C840B3" # export OPENAI_API_BASE="https://aihubmix.com" # # # Gemini CLI # export GOOGLE_GEMINI_BASE_URL="https://aihubmix.com/gemini" # export GEMINI_API_KEY="sk-BxgRxTsLAZyLAktAB0Cc3e9bF9554cEc952cF0C8A7C840B3" # # # tkinter 编译配置 (按需启用) # export LDFLAGS="-L/opt/homebrew/opt/tcl-tk/lib" # export CPPFLAGS="-I/opt/homebrew/opt/tcl-tk/include" # export PKG_CONFIG_PATH="/opt/homebrew/opt/tcl-tk/lib/pkgconfig" # ========================================== # 2. 路径设置 (PATH) # ========================================== typeset -U path # 自动去重,防止多次 source 导致路径无限堆叠 path=( $HOME/.local/bin /opt/homebrew/bin /opt/homebrew/sbin /usr/local/bin /usr/bin /bin /usr/sbin /sbin $HOME/.lmstudio/bin $HOME/.codeium/windsurf/bin $HOME/.antigravity/antigravity/bin $HOME/.opencode/bin /opt/homebrew/Cellar/poppler ) export PATH # ========================================== # 3. 补全系统初始化 # ========================================== # 注入自定义补全路径 fpath=(/Users/dyx/.docker/completions $fpath) # Homebrew zsh 补全 if [[ -d "/opt/homebrew/share/zsh/site-functions" ]]; then fpath=("/opt/homebrew/share/zsh/site-functions" $fpath) fi # 使用 -i 参数静默忽略不安全文件的权限报警 autoload -Uz compinit && compinit -i zstyle ':completion:*' menu select # ========================================== # 4. 插件管理与 Shell 增强 # ========================================== # zoxide (智能路径跳转,替代 zsh-z) if command -v zoxide > /dev/null; then eval "$(zoxide init zsh)" alias z='__zoxide_z' alias zi='__zoxide_zi' # 交互式跳转 (需配合 fzf) fi # fzf (模糊搜索核心) [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh # thefuck (命令纠错) eval $(thefuck --alias) # oh-my-posh (提示符主题) eval "$(oh-my-posh init zsh --config $(brew --prefix oh-my-posh)/themes/hotstick.minimal.omp.json)" # 语法高亮与自动补全 (必须放在 compinit 之后,插件加载的最末尾) source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh # ========================================== # 5. 自定义函数 (Functions) # ========================================== # --- 配置目录快速跳转 --- function vid() { cd ~/.config/nvim; } function vic() { cd '/Users/dyx/Library/Application Support/Code/User'; } function vn() { cd ~/.config/nvim && nvim ./init.lua; } function vdc() { nvim ~/.docker/daemon.json; } function ok() { source ~/.zshrc && clear; } # --- Django 项目环境一键激活 --- function acc() { source /Users/dyx/Code/0.python-venv/mySite-django5.0-py3.12/bin/activate cd /Users/dyx/Code/mySite && ls } # --- VSCode 智能打开 --- function codef() { local file="$1" [ -f "$file" ] && command code "$(dirname "$file")" --goto "$file" || command code "$@" } # --- Chrome 调试模式 --- function sel() { /Applications/Google\ Chrome2.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir="/Users/dyx/Code/selenium_data" } # --- SSH 连接快捷方式(无参数直接连腾讯云,有参数使用 lazyssh,且不走代理)--- ss() { if [ $# -eq 0 ]; then export NO_PROXY="txy" # 设置 txy 不走代理 ssh txy else export NO_PROXY="localhost,127.0.0.1" # 设置其他主机不走代理 lazyssh "$@" fi } # --- SSH 免密登录到 43.163.5.9(使用 SSH 密钥认证,不走代理)--- sss() { # 直连 SSH,避免终端里的代理环境变量干扰握手 unset ALL_PROXY all_proxy HTTP_PROXY HTTPS_PROXY http_proxy https_proxy NO_PROXY no_proxy if [ $# -eq 0 ]; then ssh sss else ssh sss "$@" fi } # --- Docker 容器显示函数 --- # 彩色格式化输出 _dkps_format() { TAB=$(printf '\t') docker ps "$@" --format "table {{.ID}}${TAB}{{.Names}}${TAB}{{.Status}}${TAB}{{.Image}}${TAB}{{.Ports}}" \ | perl -pe 's/\[::\]:[^\t,]*//g; s/:::[^\t,]*//g; s/0\.0\.0\.0://g; s/->/-/g; s/\/tcp//g; s/\/udp//g; s/,\s*,/,/g; s/^\s*,\s*//; s/,\s*$//' \ | awk 'NR==1 {print $0} NR>1 {if ($0 ~ /Up/) printf "\033[1;35m%s\033[0m\n", $0; else print $0}' \ | column -t -s "$TAB" } dkps() { _dkps_format } dkpsa() { _dkps_format -a } # 详细容器信息 (彩色卡片式输出) dkpsaa() { docker ps -a --format "{{.Names}}\t{{.Status}}\t{{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Command}}\t{{.RunningFor}}" | awk -F"\t" '{ if ($1 == "" || $1 ~ /^-+$/) next; print "------------------------------" if ($2 ~ /Up/) { printf "\033[1;35mNames:\033[0m \033[1;35m%s\033[0m\n", $1 printf "\033[1;33mStatus:\033[0m \033[1;33m%s\033[0m\n", $2 printf "\033[1;34mID:\033[0m \033[1;34m%s\033[0m\n", $3 printf "\033[1;32mImage:\033[0m \033[1;32m%s\033[0m\n", $4 printf "\033[1;36mPorts:\033[0m \033[1;36m%s\033[0m\n", $5 } else { printf "\033[1;35mNames:\033[0m %s\n", $1 printf "\033[1;33mStatus:\033[0m %s\n", $2 printf "\033[1;34mID:\033[0m %s\n", $3 printf "\033[1;32mImage:\033[0m %s\n", $4 printf "\033[1;36mPorts:\033[0m %s\n", $5 } printf "\033[1;37mCommand:\033[0m %s\n", $6 printf "\033[1;37mCreated:\033[0m %s\n", $7 } END {print "------------------------------"}' } # ========================================== # 6. 别名 (Aliases) # ========================================== # --- 基础命令别名 --- alias Ok='ok' alias vsh="nvim ~/.zshrc" alias Vsh="nvim ~/.zshrc" alias cl="clear" alias Cl="clear" alias cll="reset" alias py="python" alias ipy="ipython" alias mn="tldr" alias vi="nvim" alias vim="nvim" alias neovim="nvim" alias wc="which" # --- 目录跳转别名 --- alias cw="cd /Users/dyx/Code/Cloud_Web" alias zw="cd /Users/dyx/Code/Cloud_Web" alias ca="cd /Users/dyx/Library/CloudStorage/OneDrive-个人/0.Mac/Jetbrains激活" alias vis="nvim sftp://txy//www/wwwroot/" # --- 文件查看别名 --- # bat (带语法高亮的 cat) alias cc="bat" # eza (现代 ls 增强) if command -v eza > /dev/null; then alias ls='eza --icons --group-directories-first' alias l='ls' alias ll='eza -lh --icons --git --group-directories-first --header' alias la='eza -aH --icons --group-directories-first' alias lt='eza --tree --level=2 --icons' alias ld='eza -D --icons' alias lD='eza -lhD --icons' else alias ls='ls --color=auto' alias ll='ls -lh' alias la='ls -A' alias lt='tree -d -L 2' fi # --- Git 别名 --- # 基础操作 alias gs="lazygit status" alias gso="git status -s" alias gst="git status -s" alias gsu="git status -uall -s" alias ga="git add -A" alias ad="git add -A" alias gcm="git commit" alias gpll="git pull" alias gp="git pull" alias gpsh="git push" alias gck="git checkout" alias gsw="git switch" alias gcw="git switch" alias gcwc="git switch" # 分支管理 alias gb="git branch" alias gbr="git branch" alias gbra="git branch -a" alias gbrd="git branch -d" alias gmer="git merge" # 日志与查看 alias gl="git log --oneline --all" alias gll="git log --all" alias glg="git log --oneline --graph --decorate --all" alias glf="git log --name-status --oneline" alias glfs="git ls-files" alias gsh="git show" alias gf="git diff | bat --paging=always" alias gff="git diff" # 撤销与恢复 alias grs="git reset" alias gre="git reset" alias grt="git restore" alias grf="git reflog" alias gsta="git stash" alias gstl="git stash list --date=iso" alias gsta="git stash apply" # 其他 alias gini="git init" alias gfc="git fetch" alias ge='scp -P ${BACKUP_SERVER_PORT:-222} ${BACKUP_SERVER_HOST:-root@42.193.15.117}:/www/wwwroot/mySite/db.sqlite3 /Users/dyx/Code/mySite/' # --- Django 别名 --- alias cls='echo "yes" | /Users/dyx/Code/0.python-venv/mySite-django5.0-py3.12/bin/python /Users/dyx/Code/mySite/manage.py collectstatic' # --- 自动化脚本别名 --- alias bcp='/Users/dyx/Documents/my_scripts/backup.sh' alias clf='/Users/dyx/Documents/my_scripts/clean_ds.sh' alias mm='/Users/dyx/Documents/my_scripts/menu.sh' # --- 文件搜索工具别名 --- # 默认:并发数 = CPU×4(最多32),文件大小限制 2000MB alias se='/Users/dyx/Documents/my_scripts/search.py' alias se-turbo='/Users/dyx/Documents/my_scripts/search.py --max-size 50' alias se-fast='/Users/dyx/Documents/my_scripts/search.py --max-size 200' alias se-full='/Users/dyx/Documents/my_scripts/search.py --max-size 5000' # --- Docker 基础命令别名 --- alias dk="docker" alias dkr="docker run" alias dkrv="docker run -v" alias dkrd="docker run -d" alias dkrdi="docker run -d -i" alias dkrdv="docker run -d -v" alias dkrt="docker run -it" alias dkri="docker run -it" alias dkrtv="docker run -it -v" alias dkriv="docker run -it -v" alias dkrm="docker rm" alias dkec="docker exec" alias dkst="docker start" alias dkstp="docker stop" alias dkstpa="docker ps -q | xargs -r docker stop" alias dkrst="docker restart" alias dkdf="docker diff" # --- Docker 镜像管理别名 --- alias dkim="docker image" alias dkims="docker images" alias dkrmi="docker rmi" alias dkpl="docker pull" alias dkpll="docker pull" alias dkpsh="docker push" alias dkbd="docker image build" alias dkhs="docker history" # --- Docker 系统管理别名 --- alias dksy="docker system" alias dkrmca='docker ps -aq | xargs -r docker rm -f' alias dkrmia='docker images -q | xargs -r docker rmi -f' alias dkvs='docker volume ls' alias dkrmva='docker volume ls -q | xargs -r docker volume rm' # --- AI 工具环境变量 --- # Codex Nexus API Key export CRS_OAI_KEY="sk-65b0d809941fcebfe65d5717c407b56ff0e2f062ec6ee214" # --- AI 工具别名 --- # Claude Code alias claude="claude --dangerously-skip-permissions" alias codex="codex --ask-for-approval never --sandbox workspace-write \ -c sandbox_workspace_write.network_access=true" alias gemini="gemini --approval-mode=yolo" # ========================================== # 7. 外部集成与环境加载 # ========================================== # --- iTerm2 / JetBrains / Local Env 集成 --- test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh" [ -f "${HOME}/.jetbrains.vmoptions.sh" ] && . "${HOME}/.jetbrains.vmoptions.sh" [ -f "$HOME/.local/bin/env" ] && . "$HOME/.local/bin/env" [ -f ~/.config/nvim/zsh_padding.zsh ] && source ~/.config/nvim/zsh_padding.zsh # ========================================== # 8. 快捷键定制 # ========================================== # Ctrl + D 清除光标前内容 bindkey '^D' backward-kill-line