{"repo": "chenmi319/midotfiles2", "files": {"zshrc": {"0aaeb0fe602a001638469538aaf7511a832f668b": {"t": 1785595238.6049042, "n": 18092, "h": "534e9cd26972e23b", "c": "### --- 1. P10k 即时提示 -----------------------------------------------------\n# 必须位于文件最顶部;需要控制台输入的代码(密码提示等)放在此块之前\ntypeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet\nif [[ -r \"${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh\" ]]; then\n source \"${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh\"\nfi\n\n### --- 2. 环境变量与 PATH ---------------------------------------------------\n# PATH 去重(首次出现优先)\ntypeset -U path PATH\n\nexport BUN_INSTALL=\"$HOME/.bun\"\npath=(\n \"$HOME/bin\"\n /usr/local/bin\n /usr/local/sbin\n /opt/homebrew/opt/libpq/bin\n \"$HOME/.opencode/bin\"\n \"$BUN_INSTALL/bin\"\n $path\n)\n\nexport LANG=en_US.UTF-8\n# LC_ALL 强制覆盖所有 locale 分类,会使 LC_* 单项设置无效;\n# 仅在需要确保所有分类一致时使用,否则只设 LANG 即可\nexport LC_ALL=en_US.UTF-8\nexport EDITOR=vim\n[[ -f ~/.secrets/context7_api_key ]] && export CONTEXT7_API_KEY=\"$(<~/.secrets/context7_api_key)\"\n[[ -f ~/.secrets/sentry_access_token ]] && export SENTRY_ACCESS_TOKEN=\"$(<~/.secrets/sentry_access_token)\"\nexport SENTRY_URL=https://sentry.apply7.cn\n[[ -f ~/.secrets/exa_api_key ]] && export EXA_API_KEY=\"$(<~/.secrets/exa_api_key)\"\n[[ -f ~/.secrets/tavily_api_key ]] && export TAVILY_API_KEY=\"$(<~/.secrets/tavily_api_key)\"\nexport VISUAL=\"$EDITOR\"\nexport LESS=\"-F -i -j4 -M -R -w -z-4 --mouse\"\n\n# Homebrew 镜像(清华 TUNA)\nexport HOMEBREW_API_DOMAIN=\"https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/api\"\nexport HOMEBREW_BOTTLE_DOMAIN=\"https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles\"\n\n### --- 3. Oh-My-Zsh 配置 ---------------------------------------------------\nexport ZSH=\"$HOME/.oh-my-zsh\"\nZSH_THEME=\"powerlevel10k/powerlevel10k\"\n\n# 自动更新:提醒模式,每 14 天检查一次\nzstyle ':omz:update' mode reminder\nzstyle ':omz:update' frequency 14\n\n# 补全等待时显示红点\nCOMPLETION_WAITING_DOTS=\"true\"\n\n# nvm 插件:遇到 .nvmrc 自动切换版本\nzstyle ':omz:plugins:nvm' autoload yes\nzstyle ':omz:plugins:nvm' silent-autoload yes\n\n# z 插件:智能大小写、显示目标路径、列表中用 ~ 缩写、排除目录\nZSHZ_CASE=smart\nZSHZ_ECHO=1\nZSHZ_TILDE=1\nZSHZ_EXCLUDE_DIRS=(/tmp /private/tmp)\n\nplugins=(\n aliases\n colored-man-pages\n command-not-found\n encode64\n safe-paste\n tmux\n z\n git\n redis-cli\n nvm\n zsh-autosuggestions\n fast-syntax-highlighting\n history-substring-search\n)\n\n### --- 4. 补全系统 ----------------------------------------------------------\nfpath+=${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions/src\nfpath=($HOME/.docker/completions $fpath)\n\n# 可调参数\nZCOMP_CACHE_DIR=${ZCOMP_CACHE_DIR:-$HOME/.zcompcache}\nZCOMP_CACHE_TTL_DAYS=${ZCOMP_CACHE_TTL_DAYS:-14}\nZCOMP_CACHE_CLEAN_INTERVAL_SECS=${ZCOMP_CACHE_CLEAN_INTERVAL_SECS:-86400}\n\nmkdir -p \"$ZCOMP_CACHE_DIR\"\n\n# 自动清理(带锁 + 限频,后台执行不阻塞启动)\n_zcompcache_clean() {\n local stamp=\"$ZCOMP_CACHE_DIR/.last_clean\"\n local lock=\"$ZCOMP_CACHE_DIR/.clean.lock\"\n local now=$EPOCHSECONDS\n local last=0\n\n [[ -f $stamp ]] && read -r last < \"$stamp\"\n [[ $last != <-> ]] && last=0\n (( now - last < ZCOMP_CACHE_CLEAN_INTERVAL_SECS )) && return 0\n\n # 清除残留锁文件(超过 60 分钟视为异常)\n command find \"$lock\" -mmin +60 -delete 2>/dev/null\n\n if ( set -o noclobber; : > \"$lock\" ) 2>/dev/null; then\n trap 'rm -f \"$lock\"' EXIT\n command find \"$ZCOMP_CACHE_DIR\" \\\n -type f ! -name '.last_clean' ! -name '.clean.lock' \\\n -mtime +$((ZCOMP_CACHE_TTL_DAYS)) -print -delete >/dev/null 2>&1\n command find \"$ZCOMP_CACHE_DIR\" -type d -empty -delete >/dev/null 2>&1\n print -r -- \"$now\" >| \"$stamp\"\n fi\n}\n_zcompcache_clean &!\n\n# 手动一键清理\nzcompcache-clear() {\n if [[ -z \"$ZCOMP_CACHE_DIR\" || \"$ZCOMP_CACHE_DIR\" == \"/\" || \"$ZCOMP_CACHE_DIR\" == \"$HOME\" ]]; then\n echo \"zcompcache-clear: unsafe ZCOMP_CACHE_DIR: $ZCOMP_CACHE_DIR\" >&2\n return 1\n fi\n\n command find \"$ZCOMP_CACHE_DIR\" -mindepth 1 -maxdepth 1 -exec rm -rf {} + 2>/dev/null\n : >| \"$ZCOMP_CACHE_DIR/.last_clean\"\n echo \"zcompcache cleared.\"\n}\n\n### --- 5. 加载 Oh-My-Zsh ---------------------------------------------------\nsource \"$ZSH/oh-my-zsh.sh\"\n\n### --- 6. Zsh 选项与历史记录 ------------------------------------------------\n# 放在 source oh-my-zsh.sh 之后,覆盖 OMZ 默认的 share_history 等设置\nHISTSIZE=200000\nSAVEHIST=200000\nHISTFILE=~/.zsh_history\nsetopt APPEND_HISTORY INC_APPEND_HISTORY_TIME EXTENDED_HISTORY\nsetopt HIST_IGNORE_ALL_DUPS HIST_IGNORE_SPACE HIST_REDUCE_BLANKS HIST_VERIFY\nsetopt HIST_FIND_NO_DUPS HIST_EXPIRE_DUPS_FIRST\n# 关闭 OMZ 的 share_history(与 INC_APPEND_HISTORY_TIME 互斥)\n# INC_APPEND_HISTORY_TIME: 命令执行完立即写入历史文件(带耗时),上箭头只看本 shell\n# 跨终端历史同步:新开 shell 时自动加载完整历史文件\nunsetopt SHARE_HISTORY\n\nunsetopt auto_name_dirs\n\n# 覆盖 OMZ lib/completion.zsh 的默认值\n# Ctrl+W 分词:去掉下划线,使其与连字符一样作为分隔符(OMZ 会重置为空)\nWORDCHARS='*?[]~=&;!#$%^(){}<>'\n# 补全缓存统一到 ~/.zcompcache(OMZ 默认指向 ~/.oh-my-zsh/cache)\nzstyle ':completion:*' use-cache on\nzstyle ':completion:*' cache-path \"$HOME/.zcompcache\"\n\n### --- 7. 工具初始化 --------------------------------------------------------\n# >>> mamba initialize >>>\n# !! Contents within this block are managed by 'mamba shell init' !!\nexport MAMBA_EXE=\"$HOME/.local/bin/micromamba\";\nexport MAMBA_ROOT_PREFIX=\"$HOME/micromamba\";\n__mamba_setup=\"$(\"$MAMBA_EXE\" shell hook --shell zsh --root-prefix \"$MAMBA_ROOT_PREFIX\" 2> /dev/null)\"\nif [ $? -eq 0 ]; then\n eval \"$__mamba_setup\"\nelse\n alias micromamba=\"$MAMBA_EXE\"\nfi\nunset __mamba_setup\n# <<< mamba initialize <<<\n\n# goenv\n(( $+commands[goenv] )) && eval \"$(goenv init -)\"\n\n# uv / cargo 环境\n[ -f \"$HOME/.local/bin/env\" ] && . \"$HOME/.local/bin/env\"\n\n# bun completions\n[ -s \"$HOME/.bun/_bun\" ] && source \"$HOME/.bun/_bun\"\n\n# kubectl 补全(缓存;kubectl 更新时自动重新生成)\nif (( $+commands[kubectl] )); then\n _kubectl_comp=\"${XDG_CACHE_HOME:-$HOME/.cache}/kubectl_completion.zsh\"\n if [[ ! -f \"$_kubectl_comp\" || \"$commands[kubectl]\" -nt \"$_kubectl_comp\" ]]; then\n mkdir -p \"${_kubectl_comp:h}\" 2>/dev/null\n _kubectl_tmp=\"$_kubectl_comp.tmp.$$\"\n if kubectl completion zsh >| \"$_kubectl_tmp\" 2>/dev/null && [[ -s \"$_kubectl_tmp\" ]]; then\n mv -f \"$_kubectl_tmp\" \"$_kubectl_comp\"\n else\n rm -f \"$_kubectl_tmp\"\n fi\n fi\n [[ -f \"$_kubectl_comp\" ]] && source \"$_kubectl_comp\"\n unset _kubectl_comp _kubectl_tmp\nfi\n\n# aliyun CLI 补全\n(( $+commands[aliyun] )) && complete -o nospace -F \"$commands[aliyun]\" aliyun\n\n### --- 8. 函数定义 ----------------------------------------------------------\nautoload -Uz add-zsh-hook\n\n# 修复终端鼠标状态(p10k 初始化后通过 precmd 钩子运行)\nfix_mouse() {\n printf '\\e[?1000l\\e[?1002l\\e[?1006l\\e[?1003l\\e[?2004l' >/dev/tty\n}\n\n# tmux session 恢复后 $PWD 可能被 resolve 为物理路径(tmux-resurrect 从 OS 读 cwd)\n# 检查 $HOME 下一级软链接,如果 $PWD 在其物理目标下,cd 回软链接路径\n() {\n local link target suffix\n for link in $HOME/*(N@); do\n target=${link:A}\n if [[ \"$PWD\" == \"$target\"* ]]; then\n suffix=\"${PWD#$target}\"\n builtin cd \"$link$suffix\" 2>/dev/null\n return\n fi\n done\n}\n\n# tmux 中同步 $PWD 到 pane 变量(保留软链接路径,供 new-window/split-window 使用)\nif [[ -n \"$TMUX\" ]]; then\n _tmux_sync_pwd() { tmux set-option -p @pane_pwd \"$PWD\" 2>/dev/null; }\n add-zsh-hook precmd _tmux_sync_pwd\nfi\n\n# tmux 中同步 SSH agent 环境变量\nfixssh() {\n local sock\n\n [[ -n \"$TMUX\" ]] || return 0\n sock=$(tmux show-environment -qv SSH_AUTH_SOCK 2>/dev/null) || return 1\n [[ -S \"$sock\" ]] || return 1\n\n export SSH_AUTH_SOCK=\"$sock\"\n}\n\n# Docker 运行辅助:交互环境用 -it,管道/脚本用 -i\n_dockrun() {\n local tty_args=()\n if [ -t 0 ] && [ -t 1 ]; then\n tty_args=(-it)\n else\n tty_args=(-i)\n fi\n docker run --rm \"${tty_args[@]}\" \"$@\"\n}\n\n# MySQL 5.7 客户端(EOL 2023-10;仅用作客户端连接远程库)\nmysql57() { _dockrun mysql:5.7 env LANG=C.UTF-8 mysql -A \"$@\"; }\n\n# Postgres 客户端(不同版本)\npsql13() { _dockrun postgres:13 psql \"$@\"; }\npsql11() { _dockrun postgres:11 psql \"$@\"; }\npsql10() { _dockrun postgres:10 psql \"$@\"; }\n\n# Redis CLI(通过 Docker 运行)\nredis-cli() { _dockrun redis:alpine redis-cli \"$@\"; }\n\n# 符号链接辅助:已存在且正确则跳过,否则备份后创建\ntry_link() {\n if [ \"$#\" -ne 2 ]; then\n echo \"Usage: try_link \" >&2\n return 1\n fi\n\n if [ ! -e \"$1\" ] && [ ! -L \"$1\" ]; then\n echo \"try_link: source does not exist: $1\" >&2\n return 1\n fi\n\n mkdir -p \"$(dirname \"$2\")\" || return 1\n\n if [ -L \"$2\" ] && [ \"$(readlink \"$2\")\" = \"$1\" ]; then\n return 0\n fi\n\n if [ -e \"$2\" ] || [ -L \"$2\" ]; then\n mv -f \"$2\" \"$2.bak.$(date +%Y%m%d%H%M%S)\" || return 1\n fi\n\n ln -s \"$1\" \"$2\"\n}\n\n# 更新 dotfiles 仓库\nupdate_mi_dot_files() {\n git -C ~/.midotfiles2 pull\n}\n\n# uv 虚拟环境自动激活/反激活(基于 .venv 目录)\nload-uv-venv() {\n if [[ -f \"$PWD/.venv/bin/activate\" ]]; then\n if [[ \"$VIRTUAL_ENV\" != \"$PWD/.venv\" ]]; then\n source \"$PWD/.venv/bin/activate\"\n fi\n elif [[ -n \"$VIRTUAL_ENV\" ]] && [[ \"$VIRTUAL_ENV\" == */.venv ]]; then\n deactivate 2>/dev/null\n fi\n}\nadd-zsh-hook chpwd load-uv-venv\nload-uv-venv\n\n# 代理开关\nproxy() {\n export https_proxy=http://127.0.0.1:7890\n export http_proxy=http://127.0.0.1:7890\n export all_proxy=socks5://127.0.0.1:7890\n}\nunproxy() { unset http_proxy https_proxy all_proxy; }\n\n# OpenCode 包装(强制中文 locale)\noc() { LANG=zh_CN.UTF-8 LC_CTYPE=zh_CN.UTF-8 command opencode \"$@\"; }\nocc() { LANG=zh_CN.UTF-8 LC_CTYPE=zh_CN.UTF-8 command opencode \"$@\" --continue; }\n\n### --- 9. 别名 --------------------------------------------------------------\nalias conda=micromamba\nalias genpass='openssl rand -base64 24 | cut -c1-16'\nalias tmuxid='tmux display-message -p \"#{session_name}:#{window_index}.#{pane_index}\"'\nalias uvs='source .venv/bin/activate'\nalias uvsb=\"source $HOME/uv_venv/base/bin/activate\"\n# Claude Code:默认走 Pro 订阅(OAuth,月费封顶)\nalias claude='claude --verbose'\n# 显式使用 API key 按量计费(惰性读取,不全局导出污染环境)\nclaude-api() {\n local key_file=~/.secrets/claude_api_key\n if [[ ! -r \"$key_file\" ]]; then\n echo \"claude-api: $key_file 不存在或不可读\" >&2\n return 1\n fi\n\n ANTHROPIC_API_KEY=\"$(<\"$key_file\")\" command claude --verbose \"$@\"\n}\n\nclaude-cpa() {\n local key_file=~/.secrets/cpa_api_key\n local base_url=http://localhost:8317\n local model=gpt-5.6-sol\n if [[ ! -r \"$key_file\" ]]; then\n echo \"claude-cpa: $key_file 不存在或不可读\" >&2\n return 1\n fi\n command env \\\n ANTHROPIC_BASE_URL=\"$base_url\" \\\n ANTHROPIC_AUTH_TOKEN=\"$(<\"$key_file\")\" \\\n ANTHROPIC_MODEL=\"$model\" \\\n ANTHROPIC_DEFAULT_SONNET_MODEL=\"$model\" \\\n ANTHROPIC_DEFAULT_OPUS_MODEL=\"$model\" \\\n ANTHROPIC_DEFAULT_HAIKU_MODEL=\"$model\" \\\n claude --verbose \"$@\"\n}\n\nclaude-mimo() {\n local key_file=~/.secrets/xiaomimino_tpken_plan_api_key\n local base_url=https://token-plan-cn.xiaomimimo.com/anthropic\n local model='mimo-v2.5-pro[1m]'\n if [[ ! -r \"$key_file\" ]]; then\n echo \"claude-mimo: $key_file 不存在或不可读\" >&2\n return 1\n fi\n command env \\\n ANTHROPIC_BASE_URL=\"$base_url\" \\\n ANTHROPIC_AUTH_TOKEN=\"$(<\"$key_file\")\" \\\n ANTHROPIC_MODEL=\"$model\" \\\n ANTHROPIC_DEFAULT_SONNET_MODEL=\"$model\" \\\n ANTHROPIC_DEFAULT_OPUS_MODEL=\"$model\" \\\n ANTHROPIC_DEFAULT_HAIKU_MODEL=\"$model\" \\\n claude --verbose \"$@\"\n}\n\nclaude-anyrouter() {\n local key_file=~/.secrets/anyrouter_api_key\n local base_url=https://anyrouter.top\n # local base_url=https://a-ocnfniawgw.cn-shanghai.fcapp.run\n local default_model='claude-fable-5[1m]'\n local haiku_model='claude-haiku-4-5-20251001'\n local sonnet_model='claude-sonnet-4-5-20250929[1m]'\n local opus_model='claude-opus-4-8[1m]'\n if [[ ! -r \"$key_file\" ]]; then\n echo \"claude-anyrouter: $key_file 不存在或不可读\" >&2\n return 1\n fi\n command env \\\n ANTHROPIC_BASE_URL=\"$base_url\" \\\n ANTHROPIC_AUTH_TOKEN=\"$(<\"$key_file\")\" \\\n API_TIMEOUT_MS=600000 \\\n ANTHROPIC_MODEL=\"$default_model\" \\\n ANTHROPIC_DEFAULT_HAIKU_MODEL=\"$haiku_model\" \\\n ANTHROPIC_DEFAULT_SONNET_MODEL=\"$sonnet_model\" \\\n ANTHROPIC_DEFAULT_OPUS_MODEL=\"$opus_model\" \\\n claude --verbose \"$@\"\n}\n\n# 腾讯 Token Plan:默认模型 sonnet;可选传入 custom model;/model 中 opus=最新 opus,haiku=deepseek flash\nclaude-tencent() {\n local key_file=~/.secrets/tencent_tokenplan_api_key\n local base_url=https://tokenhub.tencentmaas.com\n local model=\"${TENCENT_CUSTOM_MODEL:-}\"\n local model_name=\"${TENCENT_CUSTOM_MODEL_NAME:-}\"\n local active_model=sonnet\n local -a custom_model_env=()\n if [[ ! -r \"$key_file\" ]]; then\n echo \"claude-tencent: $key_file 不存在或不可读\" >&2\n return 1\n fi\n\n if [[ -n \"$model\" ]]; then\n active_model=\"$model\"\n custom_model_env=(\n ANTHROPIC_CUSTOM_MODEL_OPTION=\"$model\"\n ANTHROPIC_CUSTOM_MODEL_OPTION_NAME=\"${model_name:-$model}\"\n )\n fi\n\n command env \\\n ANTHROPIC_BASE_URL=\"$base_url\" \\\n ANTHROPIC_AUTH_TOKEN=\"$(<\"$key_file\")\" \\\n API_TIMEOUT_MS=600000 \\\n CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \\\n ANTHROPIC_MODEL=\"$active_model\" \\\n ANTHROPIC_DEFAULT_SONNET_MODEL='custom-model-a2[1m]' \\\n ANTHROPIC_DEFAULT_SONNET_MODEL_NAME='sonnet-4.6[1m]' \\\n ANTHROPIC_DEFAULT_OPUS_MODEL='custom-model-a1[1m]' \\\n ANTHROPIC_DEFAULT_OPUS_MODEL_NAME='opus-4.7[1m]' \\\n ANTHROPIC_DEFAULT_HAIKU_MODEL='deepseek-v4-flash[1m]' \\\n ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME='deepseek-v4-flash[1m]' \\\n \"${custom_model_env[@]}\" \\\n claude --verbose \"$@\"\n}\n\nclaude-tencent-gpt54() {\n TENCENT_CUSTOM_MODEL='custom-model-b1-standard[1m]' TENCENT_CUSTOM_MODEL_NAME='gpt-5.4[1m]' claude-tencent \"$@\"\n}\n\nclaude-tencent-sonnet46() {\n TENCENT_CUSTOM_MODEL='custom-model-a2[1m]' TENCENT_CUSTOM_MODEL_NAME='sonnet-4.6[1m]' claude-tencent \"$@\"\n}\n\nclaude-tencent-opus46() {\n TENCENT_CUSTOM_MODEL='custom-model-a3[1m]' TENCENT_CUSTOM_MODEL_NAME='opus-4.6[1m]' claude-tencent \"$@\"\n}\n\nclaude-tencent-opus47() {\n TENCENT_CUSTOM_MODEL='custom-model-a1[1m]' TENCENT_CUSTOM_MODEL_NAME='opus-4.7[1m]' claude-tencent \"$@\"\n}\n\nclaude-tencent-deepseek-v4-flash() {\n TENCENT_CUSTOM_MODEL='deepseek-v4-flash[1m]' TENCENT_CUSTOM_MODEL_NAME='deepseek-v4-flash[1m]' claude-tencent \"$@\"\n}\n\nclaude-tencent-deepseek-v4-pro() {\n TENCENT_CUSTOM_MODEL='deepseek-v4-pro[1m]' TENCENT_CUSTOM_MODEL_NAME='deepseek-v4-pro[1m]' claude-tencent \"$@\"\n}\n\n### --- 10. Kubernetes 与 Helm -----------------------------------------------\n# KUBECONFIG:自动聚合 ~/.kube 下的配置文件\ntypeset -gaU KUBEFILES\nKUBEFILES=(\n $HOME/.kube/chenmi-*(N)\n $HOME/.kube/*eks*(N)\n $HOME/.kube/*rancher*.yaml(N)\n $HOME/.kube/*mixbio*.yaml(N)\n $HOME/.kube/*mycluster(N)\n)\nexport KUBECONFIG=\"${(j.:.)KUBEFILES}\"\n\n# kubectl 上下文快捷别名\nalias kube_prod_ro='kubectl --kubeconfig ~/.kube/chenmi-kube-pro-dev-ro --context=prod'\nalias kube_prod='kubectl --context=prod'\nalias kube_prod_eks='kubectl --context=eks'\nalias kube_prod_nx='kubectl --context=prod-nx'\nalias kube_ali_dev='kubectl --context=ali-dev'\nalias kube_ali_dev_ask='kubectl --context=ali-dev-ask'\nalias kube_ali_dev_worker='kubectl --context=ali-dev-worker'\nalias kube_ali_prod='kubectl --context=ali-prod'\nalias kube_ali_prod_worker='kubectl --context=ali-prod-worker'\nalias kube_mixbio_dev='kubectl --context=mixbio-dev'\nalias kube_rancher_rke='kubectl --context=rancher-rke'\nalias kube_mixbio_rancher='kubectl --context=mixbio-rancher-local'\nalias kube_mixbio='kubectl --context=mixbio'\nalias kube_mixbio_prod='kubectl --context=mixbio-prod'\nalias kube_azure='kubectl --context=azure-dev1'\nalias kube_ali_applyai='kubectl --context=ali-applyai'\n# 需要在 /etc/hosts 添加 `127.0.0.1 host.docker.internal`\nalias kube_mycluster='kubectl --context=k3d-mycluster'\n\n# 命名空间创建脚本\nalias create_ns_prod='python3 ./main.py prod'\nalias create_ns_prod_nx='python3 ./main.py nx-prod'\nalias create_ns_ali_dev='python3 ./main.py ali-dev'\nalias create_ns_ali_dev_ask='python3 ./main.py ali-dev-ask'\nalias create_ns_ali_dev_worker='python3 ./main.py ali-dev-worker'\nalias create_ns_ali_prod='python3 ./main.py ali-prod'\nalias create_ns_ali_prod_worker='python3 ./main.py ali-prod-worker'\nalias create_ns_mixbio_prod='python3 ./main_n.py mixbio-prod'\n\n# K8s 权限创建脚本\nalias new-k8s-permission_prod='python3 ./main.py prod'\nalias new-k8s-permission_ali_dev='python3 ./main.py ali-dev'\nalias new-k8s-permission_ali_dev_ask='python3 ./main.py ali-dev-ask'\nalias new-k8s-permission_ali_dev_worker='python3 ./main.py ali-dev-worker'\nalias new-k8s-permission_ali_prod='python3 ./main.py ali-prod'\nalias new-k8s-permission_ali_prod_worker='python3 ./main.py ali-prod-worker'\nalias new-k8s-permission_mixbio_dev='python3 ./main.py mixbio-dev'\nalias new-k8s-permission_mixbio_prod='python3 ./main_n.py mixbio-prod'\n\n# Helm 上下文快捷别名\nalias helm_ali_dev='helm_2_16_3 --kube-context=ali-dev'\nalias helm3_ali_dev='helm3 --kube-context=ali-dev'\nalias helm_ali_dev_ask='helm_2_16_12 --kube-context=ali-dev-ask'\nalias helm3_ali_dev_ask='helm3 --kube-context=ali-dev-ask'\nalias helm_ali_dev_worker='helm_2_16_12 --kube-context=ali-dev-worker'\nalias helm_ali_prod='helm_2_16_3 --kube-context=ali-prod'\nalias helm3_ali_prod='helm3 --kube-context=ali-prod'\nalias helm_ali_prod_worker='helm_2_16_12 --kube-context=ali-prod-worker'\nalias helm3_ali_prod_worker='helm3 --kube-context=ali-prod-worker'\nalias helm_dev='helm_2_9_1 --kube-context=ningxia-dev'\nalias helm3_dev='helm3 --kube-context=ningxia-dev'\nalias helm_prod='helm_2_9_1 --kube-context=prod'\nalias helm_prod_nx='helm_2_9_1 --kube-context=prod-nx'\nalias helm_mixbio_dev='helm_2_16_3 --kube-context=mixbio-dev'\nalias helm_mixbio_prod='helm_2_16_3 --kube-context=mixbio-prod'\nalias helm_azure='helm3 --kube-context=azure-dev1'\nalias helm_ali_applyai='helm3 --kube-context=ali-applyai'\nalias helm_mycluster='helm3 --kube-context=k3d-mycluster'\n\n# Velero 上下文快捷别名\nalias velero_prod='velero --kubecontext=prod'\nalias velero_prod_nx='velero --kubecontext=prod-nx'\n\n# Kops 上下文快捷别名\nalias bjprod-kops1-15='AWS_REGION=cn-north-1 KOPS_STATE_STORE=s3://alo7-kops/prod kops1.15'\nalias mykops1-16='AWS_REGION=cn-northwest-1 KOPS_STATE_STORE=s3://kops-bach-test kops1.16'\nalias nxprod-kops1-15='AWS_REGION=cn-northwest-1 KOPS_STATE_STORE=s3://alo7-kops-zhy/prod kops1.15'\n\n### --- 11. P10k 主题加载 ----------------------------------------------------\n[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh\n\n# 修复终端鼠标状态(必须在 p10k 初始化之后)\nadd-zsh-hook precmd fix_mouse\n# 若经常重复 source ~/.zshrc,可改用幂等版:\n# add-zsh-hook -d precmd fix_mouse 2>/dev/null\n# add-zsh-hook precmd fix_mouse\n\n# The next line updates PATH for the Google Cloud SDK.\nif [ -f '/Users/chenmi/Downloads/google-cloud-sdk/path.zsh.inc' ]; then . '/Users/chenmi/Downloads/google-cloud-sdk/path.zsh.inc'; fi\n\n# The next line enables shell command completion for gcloud.\nif [ -f '/Users/chenmi/Downloads/google-cloud-sdk/completion.zsh.inc' ]; then . '/Users/chenmi/Downloads/google-cloud-sdk/completion.zsh.inc'; fi\n"}}}}