Skip to content

Instantly share code, notes, and snippets.

@iblueer
Created January 17, 2026 01:45
Show Gist options
  • Select an option

  • Save iblueer/48e48fd73a6e774cb6689c2184eb8928 to your computer and use it in GitHub Desktop.

Select an option

Save iblueer/48e48fd73a6e774cb6689c2184eb8928 to your computer and use it in GitHub Desktop.
[终端打开文件时,通过当前编辑器] 路径:/Users/maemolee/bin/smart-edit 记得 chmod +x 才好用
#!/bin/zsh
# smart-edit: 智能编辑器选择器
# 根据当前终端所在的编辑器环境,自动选择正确的编辑器打开文件/文件夹
# 调试模式 (设置 SMART_EDIT_DEBUG=1 开启)
debug() {
[[ -n "$SMART_EDIT_DEBUG" ]] && echo "[smart-edit] $*" >&2
}
# 检测当前编辑器环境并返回对应的命令
detect_editor() {
local bundle_id="${__CFBundleIdentifier:-}"
local term_program="${TERM_PROGRAM:-}"
debug "Bundle ID: $bundle_id"
debug "TERM_PROGRAM: $term_program"
# 1. Zed - 直接通过 TERM_PROGRAM 检测
if [[ "$term_program" == "zed" ]]; then
debug "Detected: Zed"
echo "zed"
return
fi
# 2. Antigravity (agy) - 通过 Bundle ID 检测
if [[ "$bundle_id" == "com.google.antigravity" ]]; then
debug "Detected: Antigravity"
echo "${ANTIGRAVITY_CLI_ALIAS:-agy}"
return
fi
# 3. Trae - 通过 Bundle ID 检测
if [[ "$bundle_id" == "com.trae.app" ]]; then
debug "Detected: Trae"
echo "trae"
return
fi
# 4. Trae CN - 通过 Bundle ID 检测
if [[ "$bundle_id" == "cn.trae.app" ]]; then
debug "Detected: Trae CN"
# Trae CN 的 CLI 可能在 PATH 中,尝试查找
if command -v "trae-cn" &>/dev/null; then
echo "trae-cn"
elif [[ -x "/Applications/Trae CN.app/Contents/Resources/app/bin/trae" ]]; then
echo "/Applications/Trae CN.app/Contents/Resources/app/bin/trae"
else
# 回退到 code
echo "code"
fi
return
fi
# 5. VS Code - TERM_PROGRAM=vscode 但不是上面的编辑器
if [[ "$term_program" == "vscode" ]]; then
debug "Detected: VS Code"
echo "code"
return
fi
# 6. 默认 (macOS Terminal 等) - 使用 VS Code
debug "Detected: Default (using code)"
echo "code"
}
# 主逻辑
main() {
if [[ $# -eq 0 ]]; then
echo "用法: smart-edit <文件或文件夹路径>..."
echo ""
echo "智能编辑器选择器 - 根据当前终端环境自动选择编辑器"
echo ""
echo "支持的编辑器:"
echo " • Zed → zed"
echo " • Antigravity → agy"
echo " • Trae → trae"
echo " • Trae CN → trae-cn"
echo " • VS Code → code"
echo " • 其他 → code (默认)"
echo ""
echo "设置 SMART_EDIT_DEBUG=1 开启调试模式"
return 1
fi
local editor_cmd
editor_cmd=$(detect_editor)
debug "Using editor command: $editor_cmd"
# 检查命令是否存在
if ! command -v "$editor_cmd" &>/dev/null && [[ ! -x "$editor_cmd" ]]; then
echo "错误: 编辑器命令 '$editor_cmd' 未找到" >&2
echo "回退到 'code'" >&2
editor_cmd="code"
fi
# 执行打开命令
"$editor_cmd" "$@"
}
main "$@"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment