ONE CURRENT SIGNAL

iTerm2 高级使用指南

公开卡片

# iTerm2 高级使用指南 ## 基础结构 iTerm2 的界面分为四层: ```text Window(窗口) └── Tab(标签页) └── Pane(分屏) └── Shell / Pi ``` ## 1. 分屏 这是配合 Pi 使用时最实用的功能。 | 快捷键 | 功能 | |---|---| | `⌘D` | 左右分屏 | | `⌘⇧D` | 上下分屏 | | `⌘[` / `⌘]` | 切换分屏 | | `⌘⇧Enter` | 当前分屏最大化或恢复 | | `⌘W` | 关闭当前分屏或标签页 | | `⌘T` | 新建标签页 | | `⌘N` | 新建窗口 | 推荐开发布局: ```text ┌────────────────────┬───────────────────┐ │ │ npm test --watch │ │ Pi ├───────────────────┤ │ │ git / server logs │ └────────────────────┴───────────────────┘ ``` 这样测试、开发服务器和日志都能直接观察,不需要让 Pi 管理后台进程。 ## 2. 搜索和历史 | 快捷键 | 功能 | |---|---| | `⌘F` | 搜索终端输出 | | `⌘K` | 清除当前终端历史显示 | | `⌘⇧H` | 打开粘贴历史 | | `⌘;` | 根据历史命令自动补全 | | `⌘⌥B` | Instant Replay,查看之前的屏幕状态 | > 注意:粘贴历史可能包含密码或 token,不要在公共电脑上长期保存敏感内容。 ## 3. Hotkey Window 可以设置一个全局快捷键,例如 `⌥Space`,从任何应用立即呼出或隐藏 iTerm2。 配置位置: ```text iTerm2 → Settings → Keys → Hotkey ``` 选择: ```text Create a Dedicated Hotkey Window ``` 适合快速运行: ```bash pi -c git status rg something ``` ## 4. Profiles 进入: ```text iTerm2 → Settings → Profiles ``` 可以为不同用途创建 Profile: - `Default`:普通终端 - `Pi`:专门运行 Pi - `Server`:SSH 和日志 - `Light`:浅色环境 每个 Profile 可以独立配置: - 字体、字号和颜色 - 启动目录 - Scrollback 大小 - 环境变量 - 窗口标题 - 启动命令 不建议立即给 Pi Profile 设置自动启动 `pi`,否则排查 shell 问题时不方便。 ## 5. Shell Integration 在菜单中选择: ```text iTerm2 → Install Shell Integration ``` Shell Integration 可以让 iTerm2 识别每条命令的开始、结束和退出状态,从而支持: - 快速跳转到上一条命令 - 更准确地选择命令输出 - 显示命令是否成功 - 更好地识别远程主机和当前目录 常用快捷键: - `⌘⇧↑`:跳到上一条命令标记 - `⌘⇧↓`:跳到下一条命令标记 ## 6. Broadcast Input 菜单位置: ```text Shell → Broadcast Input ``` 启用后,一条命令可以同时发送到多个 pane,适合同时管理多台服务器。 > 危险:执行 `rm`、部署或数据库命令前,必须确认 Broadcast Input 已关闭,否则命令会在所有 pane 中执行。 ## 7. tmux 普通分屏会在 iTerm2 退出后终止。tmux 可以让任务在终端关闭后继续运行。 创建会话: ```bash tmux new -s work ``` 暂时离开但不停止任务: ```text Ctrl+B,然后按 D ``` 重新进入: ```bash tmux attach -t work ``` 适合: - 开发服务器 - 长时间测试 - SSH 任务 - 长时间运行的 Pi iTerm2 还支持 tmux 控制模式: ```bash tmux -CC ``` 控制模式会把 tmux 窗口映射为 iTerm2 原生窗口和标签页。建议熟悉普通 tmux 后再使用。 ## 8. Pi 与 iTerm2 Pi 的完成通知扩展位于: ```text ~/.pi/agent/extensions/notify.ts ``` Agent 完成并等待输入时,iTerm2 可以发送 macOS 通知。 Pi 的 fullscreen 模式可以临时试用: ```bash pi --tui-mode fullscreen ``` 如果 fullscreen 模式中触控板滚动特别慢: ```text iTerm2 → Settings → Advanced 搜索 “Trackpad scrolls fast?” 设置为 No ``` ## 9. Pi 输入框编辑快捷键(Readline 风格) Pi 的输入框内置了完整的行编辑快捷键,不用逐个按 Backspace 删除。 ### 删除(Del 系列) | 快捷键 | 功能 | |---|---| | `Ctrl+W` / `Alt+Backspace` | 删除光标前一个**词** | | `Alt+D` | 删除光标后一个词 | | `Ctrl+U` | 删除到**行首** | | `Ctrl+K` | 删除到**行尾** | | `Ctrl+C` | **一键清空**整个输入框(注意:再按一次是退出 Pi) | | `Ctrl+Y` | 粘贴回最近删除的内容(kill ring) | | `Ctrl+-` | **撤销**上一次编辑 | ### 光标移动与编辑 | 快捷键 | 功能 | |---|---| | `Ctrl+A` / `Home` | 跳到行首 | | `Ctrl+E` / `End` | 跳到行尾 | | `Alt+←` / `Alt+→`(或 `Ctrl+B` / `Ctrl+F`) | 按词 / 逐字符移动 | | `Ctrl+G` | 用外部编辑器(`$EDITOR`)打开,适合长文本 | | `Shift+Enter` | 插入换行(多行输入) | ### 切换历史消息 | 快捷键 | 功能 | |---|---| | `↑` / `↓` | 在输入为空(光标在顶部)时,浏览之前发过的消息 | 自定义历史快捷键(编辑 `~/.pi/agent/keybindings.json` 后运行 `/reload`): ```json { "tui.editor.historyPrevious": "alt+up", "tui.editor.historyNext": "alt+down" } ``` ### 为什么是这些按键? - 这套(`Ctrl+W/U/K/Y/A/E`)是 Unix **Readline/Emacs 传统键位**:`Y` = Yank(找回想删除的文本)、`W` = Word(删词)、`U` = Unix-line(清到行首)、`K` = Kill(删到行尾)。bash、zsh 的命令行编辑全用这套。 - `Ctrl+C` 在 shell 里是“取消当前命令”,Pi 借来“清空输入”。 ### 为什么 ⌘ 不能用于 Pi 内部? - 终端和程序之间只传字符流:`Ctrl` 可编码成控制字符、`Alt` 可编码成 ESC 前缀,但 **⌘ 没有任何字节表示**,物理上传不到 Pi。 - `⌘C`、`⌘V`、`⌘K` 等会被 **iTerm2 拦截**为它自己的菜单功能,不会送到 Pi。 - 因此所有 TUI 程序(vim、nano、pi、less…)都只用 `Ctrl`/`Alt`,⌘ 只属于图形 App。 - Pi 的 `keybindings.json` 理论上支持 `super`(⌘)修饰符,但需要终端启用 **Kitty keyboard protocol** 上报,默认不可用。 - **⌘ 键留给 iTerm2**:⌘C 复制、⌘V 粘贴、⌘K 清屏、⌘D 分屏。 ## 最值得先掌握的功能 1. 使用 `⌘D` 和 `⌘⇧D` 分屏。 2. 使用 `⌘[`、`⌘]` 在 pane 之间切换。 3. 使用 `⌘⇧Enter` 最大化或恢复当前 pane。 4. 创建 `⌥Space` Hotkey Window。 5. 安装 Shell Integration。

ENTER INFO

用邮箱进入

登录和注册是同一件事。我们会发一封一次性验证邮件,不需要密码。

PUT ONE SIGNAL INTO MOTION

发布信息

发布人由当前账户自动填写 · 发布即确认你有权公开内容 · 支持 Markdown 与 LaTeX

YOUR SIDE OF THE NETWORK

我的网络

此处保存的受保护号码不会在共享池、检索结果、信息详情或连接列表中显示;你主动写进卡片的联系方式会按卡片可见范围公开。替换或删除号码会断开现有连接。

DIRECT REACH

连接后的联系方式

MEMBER SIGNALS

成员

正在读取这个成员的卡片…

REQUEST A CONNECTION

发起连接

写一句临时验证信息。对方接受后,双方才可查看彼此的联系方式。