# ========================================== # 环境变量 # ========================================== # --- 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) # --- 代理 --- export all_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" # --- Docker --- export DOCKER_BUILDKIT=1 export DOCKER_CONTENT_TRUST=1 # --- AI 工具 --- # export CRS_OAI_KEY="sk-65b0d809941fcebfe65d5717c407b56ff0e2f062ec6ee214" # --- API Keys(按需启用) --- # # Neovim AI 补全 # export OPENAI_API_KEY="40a8a6bda564f8f19e38493ce5eb2a53c31c69ae9bacbcac" # 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" # ========================================== # 路径设置 # ========================================== typeset -U path path=( $HOME/.local/bin $HOME/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 # ========================================== # 补全系统 # ========================================== fpath=(/Users/dyx/.docker/completions $fpath) if [[ -d "/opt/homebrew/share/zsh/site-functions" ]]; then fpath=("/opt/homebrew/share/zsh/site-functions" $fpath) fi autoload -Uz compinit && compinit -i zstyle ':completion:*' menu select # ========================================== # 插件与 Shell 增强 # ========================================== # zoxide - 智能路径跳转 if command -v zoxide > /dev/null; then eval "$(zoxide init zsh)" alias z='__zoxide_z' alias zi='__zoxide_zi' fi # fzf - 模糊搜索 [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh # thefuck - 命令纠错 eval $(thefuck --alias) # oh-my-posh - 提示符主题 eval "$(oh-my-posh init zsh --config /Users/dyx/terminal/1.json)" # 语法高亮与自动补全(须放在插件加载最末尾) source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh # ========================================== # 自定义函数 # ========================================== # --- 目录跳转 --- cvs() { cd '/Users/dyx/Library/Application Support/Code/User'; } ccl() { cd '/Users/dyx/.claude' && vim; } ccx() { cd '/Users/dyx/.codex' && vim; } cge() { cd '/Users/dyx/.gemini' && vim; } cvm() { cd ~/.config/nvim && nvim ./init.lua; } ok() { source ~/.zshrc && clear; } # --- Django 项目环境 --- acc() { source /Users/dyx/Code/0.python-venv/mySite-django5.0-py3.12/bin/activate cd /Users/dyx/Code/mySite && ls } # --- VSCode 智能打开 --- codef() { local file="$1" [ -f "$file" ] && command code "$(dirname "$file")" --goto "$file" || command code "$@" } # --- Chrome 调试模式 --- sel() { /Applications/Google\ Chrome2.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir="/Users/dyx/Code/selenium_data" } # --- SSH 连接 --- ss() { if [ $# -eq 0 ]; then export NO_PROXY="txy" ssh txy else export NO_PROXY="localhost,127.0.0.1" lazyssh "$@" fi } sss() { 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 } ssk() { unset ALL_PROXY all_proxy HTTP_PROXY HTTPS_PROXY http_proxy https_proxy NO_PROXY no_proxy if [ $# -eq 0 ]; then ssh ssk else ssh ssk "$@" fi } ssm() { unset ALL_PROXY all_proxy HTTP_PROXY HTTPS_PROXY http_proxy https_proxy NO_PROXY no_proxy if [ $# -eq 0 ]; then ssh ssm else ssh ssm "$@" 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 "------------------------------"}' } dkrmaa() { docker ps -aq | xargs -r docker rm -f docker images -q | xargs -r docker rmi -f docker volume ls -q | xargs -r docker volume rm docker system prune -a --volumes } # ========================================== # 别名 # ========================================== # --- 基础命令 --- 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 cc="bat" 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 # --- 目录跳转 --- alias cw="cd /Users/dyx/Code/Cloud_Web" alias vis="nvim sftp://txy//www/wwwroot/" # --- Git --- # 状态与提交 alias gs="lazygit status" alias gss="git status --short --branch" alias gst="git status -s" alias gsu="git status -uall -s" alias ga="git add ." alias gcm="git commit" alias gp="git pull" alias gpsh="git push" # 分支与切换 alias gck="git checkout" alias gsw="git switch" alias gcwc="git switch -c" alias gb="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 gla="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 gre="git reset" alias grt="git restore" alias grf="git reflog" 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/' # --- 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 dkri="docker run -it" 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" # 镜像管理 alias dkim="docker image" alias dkims="docker images" alias dkrmi="docker rmi" alias dkpl="docker pull" alias dkpsh="docker push" alias dkbd="docker image build" alias dkhs="docker history" # 系统清理 alias dksy="docker system" alias dkrmia='docker images -q | xargs -r docker rmi -f' alias dkrmca='docker ps -aq | xargs -r docker rm -f' alias dkrmva='docker volume ls -q | xargs -r docker volume rm' alias dkvs='docker volume ls' alias kl="/Users/dyx/Documents/my_scripts/kill_port.sh" # --- AI 工具 --- alias oc='opencode' alias ca="claude --dangerously-skip-permissions" alias claude="claude --dangerously-skip-permissions" alias codex="codex --ask-for-approval never --sandbox workspace-write -c sandbox_workspace_write.network_access=true" alias cx="codex --ask-for-approval never --sandbox workspace-write -c sandbox_workspace_write.network_access=true" alias gemini="gemini --approval-mode=yolo" alias ge="gemini --approval-mode=yolo" alias codex-api='~/bin/codex-api' # --- 自动化脚本 --- 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' alias nn='/Users/dyx/Documents/my_scripts/account_switch.sh' # --- 文件搜索 --- 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' # --- 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' # ========================================== # 外部集成 # ========================================== 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 # ========================================== # 快捷键 # ========================================== bindkey '^D' backward-kill-line [[ ":$PATH:" != *":$HOME/.config/kaku/zsh/bin:"* ]] && export PATH="$HOME/.config/kaku/zsh/bin:$PATH" # Kaku PATH Integration [[ -f "$HOME/.config/kaku/zsh/kaku.zsh" ]] && source "$HOME/.config/kaku/zsh/kaku.zsh" # Kaku Shell Integration export PATH="/Users/dyx/.local/bin:$PATH" # Added by Deck.app