前面的文章把 iTerm2 装好了、配好了,但很多人日常用终端还是慢。常见的问题有这些:
- 切来切去靠鼠标 — 明明有分屏,却还在多个窗口之间用鼠标点来点去,效率很低。
- 重复命令反复敲 —
git status、cd ../..、ls -la这种命令一天打几十遍,手指头都累了。 - Git 操作全靠命令行 — add、commit、push 每次都要手动输入完整命令,偶尔还拼错。
- 历史命令翻不到 — 昨天跑的那个很长的命令,今天想找却怎么也翻不出来。
这篇把日常操作的效率拉上去。
快捷操作
常用快捷键速查
iTerm2 的快捷键很多,但日常真正高频使用的就那几个。下面按场景分组,每组中标 ⭐ 的是最常用的三个,优先记住它们就够了。
标签页管理
| 快捷键 | 功能 | 使用频率 |
|---|---|---|
| ⌘T | 新建标签页 | ⭐ |
| ⌘W | 关闭当前标签页 | ⭐ |
| ⌘+数字 | 切换到第 N 个标签页 | ⭐ |
| ⌘← / ⌘→ | 切换到上一个/下一个标签页 | |
| ⌘⇧[ / ⌘⇧] | 切换到上一个/下一个标签页(alternative) |
分屏操作
| 快捷键 | 功能 | 使用频率 |
|---|---|---|
| ⌘D | 垂直分屏 | ⭐ |
| ⌘⇧D | 水平分屏 | ⭐ |
| ⌘[ / ⌘] | 在分屏之间切换 | ⭐ |
| ⌘⌥←↑↓→ | 切换到指定方向的分屏 | |
| ⌘⇧Enter | 最大化/还原当前分屏 |
搜索与历史
| 快捷键 | 功能 | 使用频率 |
|---|---|---|
| ⌘F | 搜索当前终端内容 | ⭐ |
| ⌘⇧H | 查看粘贴历史 | |
| ⌘⇧; | 查看命令历史 | ⭐ |
| ⌘; | 自动补全 | ⭐ |
| ⌘⇧/ | 在 man page 中搜索 |
分屏操作详解
分屏是 iTerm2 最实用的功能之一。很多人只知道它能分,却没养成日常使用的习惯。
怎么分屏?
- 垂直分屏(左右分割):按
⌘D,当前窗口会在右侧新建一个面板。 - 水平分屏(上下分割):按
⌘⇧D,当前窗口会在下方新建一个面板。
在分屏之间导航:
⌘[切换到上一个面板,⌘]切换到下一个面板。这是最常用的切换方式。⌘⌥+方向键可以直接切换到指定方向的面板,比如⌘⌥→切到右边的面板。
调整面板大小:
- 最简单的方式是直接拖动面板之间的分隔线。
- 也可以用
⌘⌥+方向键微调面板的尺寸。
最大化面板:
- 按
⌘⇧Enter可以把当前面板临时最大化,再按一次恢复原样。当你需要全屏看日志时特别有用。
实际使用场景举例:
左边跑开发服务器(npm run dev),右边用 tail -f logs/error.log 盯着错误日志。代码改了之后,左边自动热更新,右边实时看到有没有报错,不用切来切去。
热键窗口
热键窗口(Hotkey Window)是一个「呼之即来、挥之即去」的浮动终端窗口。
它能干什么?
不管你当前在什么应用里,按一个快捷键,一个半透明的终端窗口就会从屏幕顶部(或底部)滑出来。再按一次就消失。不需要切换到 iTerm2,不需要新建标签页,随用随走。
怎么设置?
- 打开 iTerm2 → Preferences → Keys → Hotkey
- 点击「Create a Dedicated Hotkey Window」
- 在弹出的窗口中,设置你想要的热键。推荐用
⌥Space(Option + 空格),这个组合几乎不会和其他软件冲突 - 可以选择窗口出现的位置(顶部、底部、居中),以及窗口的大小和透明度
- 建议开启「Floating Window」选项,让这个窗口浮在所有应用之上
为什么推荐用?
日常开发中经常需要临时执行一两条命令:查个 IP、看个进程、跑个一次性脚本。有了热键窗口,不需要离开当前编辑器或浏览器,⌥Space 敲完命令再 ⌥Space 回来,整个过程不超过三秒。
Natural Text Editing
这是 iTerm2 内置的一个按键预设方案,开启后终端里的文本编辑行为会变得和普通文本编辑器一样。默认情况下,在终端里移动光标是按字符移动的,很慢。开启这个预设后就能按单词跳、跳到行首行尾。
怎么开启?
- 打开 Preferences → Profiles → Keys → Key Mappings
- 点击左下角的「Load Preset...」
- 选择「Natural Text Editing」
开启后的关键行为:
⌥←/⌥→:按单词向前/向后跳。比如光标在long-command-name的末尾,按⌥←一下就跳到-name前面。⌘←/⌘→:直接跳到行首/行尾。修改一个很长的命令时,不用一直按着方向键了。⌥Delete/⌥FnDelete:向前/向后删除整个单词。打错了一个单词,不用一下一下地按 Delete。
为什么这个很重要?
很多人觉得终端难用,很大一部分原因就是文本编辑体验差。Natural Text Editing 把这个体验补齐了,移动和删除的效率能提升好几倍。这是那种一旦用上就回不去的功能。
历史记录与自动补全
iTerm2 有几个和历史记录相关的快捷键,用好了能省很多重复输入。
命令历史弹窗:⌘⇧;
按这个组合键会弹出一个下拉列表,显示你最近输入过的命令。支持搜索过滤。昨天跑过的那个复杂命令?不需要在历史里翻半天,⌘⇧; 一搜就有。
自动补全建议:⌘;
输入命令的前几个字符后按 ⌘;,iTerm2 会根据你的历史记录给出补全建议。比如输入 git 然后按 ⌘;,它会列出你最近用过的 git 命令供你选择。
粘贴历史:⌘⇧H
iTerm2 会记录你复制粘贴过的内容。按 ⌘⇧H 可以查看粘贴历史,选择之前复制过的内容直接粘贴。
密码管理器集成
如果你使用 1Password 或 LastPass 等密码管理器,iTerm2 支持直接集成。
设置路径:Preferences → Profiles → General → Password Manager。配置好后,可以在终端中直接调用密码管理器填充密码,不用在终端和密码管理器之间来回切换。
这个功能不是每个人都用得上,但对于经常需要 SSH 登录远程服务器或操作数据库的开发者来说还是挺方便的。如果你不需要,跳过就好。
自定义别名与函数
快捷键解决的是 iTerm2 层面的效率问题,而自定义别名和函数解决的是 Shell 层面的效率问题。两者配合起来,日常操作才能真正快起来。
常用 alias
在 ~/.zshrc 中添加以下别名,按类别整理。这里假设你已经按照本系列第二篇安装了 eza、bat、fd、ripgrep 等现代工具。
# 文件操作
alias ll='eza -la --icons --git'
alias lt='eza -la --icons --tree --level=2'
# Git(如果不用 lazygit 的时候)
alias gs='git status'
alias gl='git log --oneline -10'
alias gd='git diff'
alias gp='git push'
# 目录跳转
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
# 网络
alias myip='curl ifconfig.me'
alias flush='sudo dscacheutil -flushcache'
# 工具
alias cat='bat --paging=never'
alias find='fd'
alias grep='rg'几点说明:
ll用eza替代了ls -la,支持图标显示和 Git 状态。lt会以树形结构展示当前目录,限制两层深度,不会刷屏。..、...、....这组别名省去了反复敲cd的麻烦,非常高频。- 工具类别名把传统命令替换成了更快的现代替代品。
bat替代cat有语法高亮,fd替代find速度更快,rg替代grep递归搜索快得多。
改完 ~/.zshrc 后记得 source ~/.zshrc 让配置生效。
编写 zsh function
别名(alias)适合简短的命令替换,但它有一个局限:不能接收参数。当你需要更灵活的逻辑时,就要用到 zsh function。
alias 和 function 的区别:
alias只做简单的文本替换,不支持参数。function是真正的函数,可以接收$1、$2等参数,可以写条件判断和循环。
下面是几个日常开发中非常实用的函数。同样添加到 ~/.zshrc 中即可。
# 快速创建并进入目录
mkcd() {
mkdir -p "$1" && cd "$1"
}
# 在当前目录启动一个简单的 HTTP 服务器
serve() {
python3 -m http.server "${1:-8000}"
}
# 快速查找文件并打开
vf() {
local file
file=$(fzf --preview 'bat --style=numbers --color=always {}')
[ -n "$file" ] && ${EDITOR:-vim} "$file"
}
# 快速 clone 并进入项目
clone() {
git clone "$1" && cd "$(basename "$1" .git)"
}逐个解释:
mkcd project-name— 一条命令完成「创建目录 + 进入目录」,不用分两步操作。mkdir -p还会自动创建中间缺少的父目录。serve— 在当前目录快速启动一个 HTTP 服务器,默认端口 8000。可以serve 3000指定端口。临时分享静态文件或者前端调试时特别好用。vf— 用 fzf 模糊搜索文件,右侧实时预览文件内容(用 bat 渲染),选中后用编辑器打开。比反复ls然后vim xxx快太多了。clone https://github.com/user/repo.git— clone 完自动进入项目目录,少敲一次cd。
实用函数示例
再来几个更具体的场景化函数:
# 查天气(需要联网)
weather() {
curl -s "wttr.in/${1:-Beijing}?lang=zh"
}
# 清理 Docker 资源
docker_clean() {
docker system prune -af --volumes
echo "Docker 清理完成"
}
# 查看端口占用
port() {
lsof -i :"$1"
}用法:
weather— 直接输入显示北京天气,weather Shanghai显示上海天气。wttr.in是一个免费天气服务,支持中文显示。docker_clean— 一键清理所有未使用的 Docker 镜像、容器、网络和卷。磁盘空间不够的时候用。port 8080— 查看哪个进程占用了 8080 端口。开发时经常遇到端口被占用的情况,用这个比记lsof的参数快多了。
Git 终端工作流
前面讲了别名和函数来简化 Git 操作,但如果你日常频繁使用 Git(大部分开发者都是),还有一个更好的选择:lazygit。它是一个终端里的 Git 图形化界面,用键盘操作,比命令行直观,比 GUI 工具快。
lazygit 安装
brew install lazygit安装完成后,在任意 Git 仓库目录下输入 lazygit 即可启动。
基本操作
下面用一个完整的日常工作流来演示 lazygit 的使用。
1. 打开项目
cd ~/projects/my-project
lazygit进入后你会看到一个分屏界面,左侧是文件状态,右侧是差异内容。
2. 查看状态
主界面会直接显示所有变更的文件。修改过的文件、新增的文件、删除的文件一目了然,不用再敲 git status。
3. 暂存文件
用方向键导航到想暂存的文件,按 Space 暂存单个文件。如果想暂存所有文件,按 a(全选暂存)。暂存后的文件会从「Unstaged」移到「Staged」区域。
4. 提交
按 c 打开提交信息输入框,输入提交信息后按 Enter 确认提交。就这么简单,不需要 git commit -m "..."。
5. 推送
按 P(大写,即 Shift+P)推送到远程。lazygit 会显示推送进度。
6. 拉取
按 p(小写)从远程拉取最新代码。
7. 查看日志
按 l 进入日志视图,可以看到完整的提交历史。在某个 commit 上按 Enter 可以查看该 commit 的详细差异。
8. 分支操作
按 b 进入分支列表,可以看到本地和远程的所有分支。按 n 创建新分支,按 Space 切换到选中的分支。
总结一下最常用的操作:
| 操作 | 按键 | 说明 |
|---|---|---|
| 暂存文件 | Space | 暂存/取消暂存当前文件 |
| 暂存全部 | a | 暂存所有变更 |
| 提交 | c | 输入 commit message 并提交 |
| 推送 | P | push 到远程 |
| 拉取 | p | pull 远程代码 |
| 查看日志 | l | 打开提交历史 |
| 分支列表 | b | 查看/切换/创建分支 |
进阶用法
lazygit 不只是能做基本的 add/commit/push,它对 Git 的高级操作支持也很好。
交互式 rebase
在日志视图(按 l 进入)中,用方向键选择要操作的 commit。按 e 标记为 rebase 编辑点,可以标记多个。标记完后按 r 开始交互式 rebase。在 rebase 过程中,可以对每个 commit 选择 pick、squash、edit 等操作。
Cherry-pick
在日志视图中,找到要搬运的 commit,按 C(大写)复制该 commit。然后切换到目标分支,按 V(大写)粘贴(cherry-pick)。比手动复制 commit hash 再 git cherry-pick 直观多了。
解决冲突
当 merge 或 rebase 出现冲突时,lazygit 会高亮显示冲突文件。按 Enter 可以用配置的编辑器打开冲突文件进行手动解决。解决完毕后,回到 lazygit 按 c 完成提交。如果想放弃这次操作,按 Esc 退出。
Stash 管理
按 s 可以把当前的变更 stash 起来(暂存到栈上)。按 S(大写)弹出(pop)最近的 stash。在 stash 列表中可以看到所有 stash 记录,选择某一条按 g 可以 drop 掉它。
掌握这些之后,日常终端操作应该顺手多了。如果你还想折腾点更省事的玩法,最后一篇在等你。