终端是程序员每天花大量时间的地方。优化终端效率,是投入产出比最高的生产力投资之一。这篇文章介绍我每天都在用的四个核心工具,以及如何把它们组合成一个高效的工作流。
zsh + Oh My Zsh:终端基础
为什么用 zsh
bash 的补全能力有限,zsh 有更强的插件生态。Oh My Zsh 是最流行的 zsh 配置框架。
安装和基础配置
终端命令
1# macOS2brew install zsh3 4# Ubuntu/Debian5sudo apt install zsh6 7# 安装 Oh My Zsh8sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"必装插件
.zshrc 关键配置:
终端命令
1# 插件列表2plugins=(3 git # git 快捷命令4 docker # docker 补全5 npm # npm 补全6 node # node 补全7 vscode # 在终端打开 VS Code8 zsh-autosuggestions # 异步历史建议9 zsh-syntax-highlighting # 语法高亮10)11 12# 主题13ZSH_THEME="robbyrussell" # 默认主题,简洁14# 或者用 powerlevel10k(更个性化)powerlevel10k 主题
终端命令
1# 安装2git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \3 ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k4 5# 设置6echo 'ZSH_THEME="powerlevel10k/powerlevel10k"' >> ~/.zshrc7source ~/.zshrc配置向导会自动运行,按自己喜好选择。
常用 alias
终端命令
1# ~/.zshrc2 3# Git4alias gs="git status"5alias ga="git add"6alias gc="git commit"7alias gp="git push"8alias gl="git log --oneline --graph --decorate"9 10# Docker11alias d="docker"12alias dc="docker compose"13 14# 目录跳转15alias ..="cd .."16alias ...="cd ../.."17alias -- -="cd -"18 19# 创建目录并进入20mkcd() { mkdir -p "$1" && cd "$1" }tmux:会话管理
为什么用 tmux
终端多会话管理、窗口分屏、断开重连——zsh 做不了这些,tmux 可以。
基础命令
终端命令
1# 安装2brew install tmux # macOS3sudo apt install tmux # Ubuntu4 5# 基础操作6tmux new -s work # 创建名为 work 的会话7tmux list-sessions # 查看所有会话8tmux attach -t work # 回到 work 会话9tmux kill-session -t work # 删除会话窗口和面板
终端命令
1# 快捷键前缀:Ctrl+b2 3# 窗口操作4Ctrl+b c # 创建新窗口5Ctrl+b n # 切换到下一个窗口6Ctrl+b p # 切换到上一个窗口7Ctrl+b 数字 # 切换到第 N 个窗口8 9# 面板操作10Ctrl+b % # 左右分屏11Ctrl+b " # 上下分屏12Ctrl+b 方向键 # 切换面板13Ctrl+b d # 断开会话(后台运行)我的 tmux.conf
终端命令
1# ~/.tmux.conf2 3# 基础设置4set -g prefix C-a # 前缀改为 Ctrl+a(更顺手)5unbind C-b6set -g default-terminal "screen-256color"7set -g mouse on # 启用鼠标8 9# 快速面板切换10bind h select-pane -L11bind j select-pane -D12bind k select-pane -U13bind l select-pane -R14 15# 重新加载配置16bind r source-file ~/.tmux.conf \; display "Config reloaded"常用场景
场景 1:同时监控多个服务
终端命令
1tmux new -s prod2Ctrl+b " # 分屏3上方:watch curl https://api.example.com/health4下方:tail -f logs/app.log场景 2:vim + 终端切换
终端命令
1tmux new -s dev2Ctrl+b " # 上下分屏3上方:vim4下方:npm run testfzf:模糊搜索
为什么用 fzf
find 太慢,grep 需要精确匹配,fzf 是模糊搜索,3 个字母找到你想要的文件。
安装
终端命令
1# macOS2brew install fzf3 4# Ubuntu5sudo apt install fzf6 7# 在 zsh 里启用8eval "$(fzf --zsh)"核心用法
文件搜索:Ctrl+t
在终端按 Ctrl+t,输入文件名片段,fzf 会在当前目录模糊搜索,回车选中后会输出完整路径。
目录跳转:Alt+c
按 Alt+c,输入目录名,快速跳转到目标目录。
历史命令:Ctrl+r
按 Ctrl+r,输入命令片段,模糊搜索历史记录,比上下键快 10 倍。
与其他工具集成
终端命令
1# 在 vim 中使用 fzf2vim $(fzf)3 4# 在 zsh 中集成(~/.zshrc)5source <(fzf --zsh)6 7# 用 fzf 选择 git 分支8git checkout $(git branch | fzf)9 10# 用 fzf 选择 docker 容器11docker exec -it $(docker ps --format "{{.Names}}" | fzf) bashlazygit:Git 终端 UI
为什么用 lazygit
不想记那么多 git 命令,但需要清晰的 Git 操作界面。lazygit 是「Git 的终端 UI」。
安装
终端命令
1# macOS2brew install lazygit3 4# Linux5sudo apt install lazygit基础操作
终端命令
1lg # 启动 lazygit界面分三个区:
- 左:文件区 — 显示 git status,等于
git status - 中:提交区 — 显示提交历史,等于
git log - 右:仓库区 — 显示分支、标签等
常用操作:
Space:选中/取消文件c:commitP:pushl:刷新
使用场景
场景:处理复杂的 rebase
终端命令
1lg2- 选择要 rebase 的多个提交3- 按 E 启动 editor 修改4- lazygit 会一步步引导你完成 rebase比命令行更不容易出错。
工具链组合
四个工具组合在一起的工作流:
终端命令
1zsh(基础 shell)2 └── fzf(模糊搜索)3 └── oh-my-zsh(插件)4tmux(会话管理)5 └── 每个窗口可以运行不同服务6 ├── zsh + fzf + lazygit7 └── zsh + fzf + lazygit8fzf(全局搜索)9 ├── 文件搜索10 ├── 命令历史11 └── 目录跳转12lazygit(Git 操作)实际效果:
- 从打开终端到开始编码:< 3 秒
- 搜索历史命令:< 1 秒
- Git 操作(commit/push/log):可视化,比记命令快
我的快捷键总结
| 快捷键 | 工具 | 功能 |
|---|---|---|
Ctrl+t | fzf | 文件模糊搜索 |
Ctrl+r | fzf | 历史命令搜索 |
Alt+c | fzf | 目录跳转 |
Ctrl+b 之后 d | tmux | 断开会话 |
Ctrl+b 之后 % | tmux | 左右分屏 |
Ctrl+b 之后 " | tmux | 上下分屏 |
lg | lazygit | 启动 Git UI |
总结
这四个工具是终端效率的基础配置,加在一起需要约 2 小时安装配置,之后每天能节省至少 30 分钟。一劳永逸的投资。
