Created
January 17, 2026 01:45
-
-
Save iblueer/48e48fd73a6e774cb6689c2184eb8928 to your computer and use it in GitHub Desktop.
[终端打开文件时,通过当前编辑器] 路径:/Users/maemolee/bin/smart-edit 记得 chmod +x 才好用
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/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