把终端调教成顺手的样子:8 个开源工具,替我少敲了几千次键盘

把终端调教成顺手的样子:8 个开源工具,替我少敲了几千次键盘

图片[1]-把终端调教成顺手的样子:8 个开源工具,替我少敲了几千次键盘 - 咸鱼科技躺盐社区-咸鱼科技躺盐社区
生成摘要
AI 生成,仅供参考

我不是什么极客,只是个每天要在黑窗口里待上两三个小时的普通打工人。饿饿,饭饭,主打一个陪伴——但陪我的那几把工具,得顺手才行。( ゚▽゚)/

终端夜课

这篇不聊玄学,只聊八个我电脑上真实在用的开源命令行工具。它们没有一个是”必须”的,但每一个都实实在在替我少敲了几千次键盘。

🧭 先说结论:这套组合长什么样

用一句话概括:把”找内容、模糊查找、跳目录、看文件、列目录、多任务、管版本、盯资源”这八件事,各自换成一个更懂你的工具。全是开源、免费、跨平台的。

场景 常见做法 换成 一句话理由
搜内容 grep ripgrep(rg) 默认跳过 .gitignore 里的目录,递归搜索快得多
模糊查找 靠记忆翻目录 fzf 什么列表都能接管道,历史命令、文件、分支一把梭
跳目录 cd ../../.. zoxide(z) 记住你去过哪,报个名字就跳过去
看文件 cat bat 语法高亮、行号、Git 改动标记
列目录 ls eza 图标、Git 状态、树状视图,一眼看清
多任务 开一堆终端窗口 tmux 一个窗口挂多个会话,断线也不怕
管版本 背一堆 git 参数 lazygit 键盘操作的 Git 面板,暂存提交推送一目了然
看资源 top / 任务管理器 btop TUI 里的 CPU、内存、网络、进程一览

工具矩阵

🔧 一个一个说,为什么最后留下了它们

1. ripgrep:让”我记得写过这个词”变成”一秒找到”

ripgrep 是 Rust 写的,默认就会跳过 .gitignore 里列出的目录和隐藏文件,所以在几万个文件的仓库里搜关键字,基本是回车即出结果。我常用的三种姿势:

rg "TODO"                     # 全仓库找关键词
rg -n -w "config" src/        # 只搜 src,整词匹配,带行号
rg --files -g "*.md"          # 按后缀列出文件

2. fzf:一个”什么都能搜”的中间件

fzf 是 Go 写的模糊查找器,它不生产结果,只是把管道流过来的东西变成可搜索的列表。所以它能接历史命令、文件路径、Git 分支、Docker 容器……我把它当”终端里的 Ctrl+P”。装上它的 shell 集成后,Ctrl+R 变成可搜索的历史命令,Ctrl+T 变成可交互的文件选择。

3. zoxide:把”跳目录”变成”报名字”

zoxide 会记录你去过哪些目录、去了多少次,然后用 z 加关键字直接跳。记得在 shell 配置里做一次初始化:

# ~/.bashrc 或 ~/.zshrc
eval "$(zoxide init bash)"    # zsh 用户把 bash 换成 zsh

之后 z blog 就跳到最常去的那个 blog 目录;zi 会调起 fzf,让你在一堆候选里挑。

4. bat:cat 的”体面版本”

bat 会做语法高亮、显示行号、标出 Git 修改过的行。它默认走分页器(像 less),所以想拿它当 cat 用时得加参数:

alias cat='bat --paging=never'

它还有个贴心设计:输出被管道接走时,会自动去掉行号和装饰,只吐纯文本,不会破坏后面的处理。

5. eza:ls 的现代替代

eza 是 exa 的活跃维护分支,同样是 Rust 写的,默认就带颜色、图标,还能把 Git 状态标出来:

alias ll='eza -l --icons --git --group-directories-first'
eza --tree --level=2          # 树状看两层目录

小提醒:图标需要终端字体支持 Nerd Font,否则会显示成一排方块,不想折腾就加 –icons=never。

6. tmux:让”关掉窗口”不再等于”杀掉任务”

tmux 是终端复用器,一个窗口里挂多个会话。断开 SSH、合上盖子,会话都还在后台跑。

tmux new -s work         # 新建名为 work 的会话
tmux ls                  # 看有哪些会话
tmux attach -t work      # 回到 work
# 在会话里按 Ctrl+b 再按 d,是"脱离",不是退出

对我来说这不像效率问题,更像心态问题:跑长任务的时候,终于敢关电脑了。

7. lazygit:把 Git 变成一块键盘面板

lazygit 是 Go 写的 Git 终端界面:左边分支、中间文件、右边 diff,空格暂存、c 提交、P 推送。它不是替代 git,只是把”我知道要干嘛、但想不起参数”的那一段省掉了。

8. btop:资源监视器也可以很好看

btop 用 C++ 写,把 CPU、内存、磁盘、网络、进程塞进一个 TUI,还带历史曲线。在没有图形界面的服务器上,它比 top 友好太多。

🌙 它们连起来是什么样:一个真实的下班前十分钟

晚上十点,想改一篇旧文档,但忘了它在哪个目录。以前是三个窗口、四五次 cd、两次 ls;现在是这样:

z blog                                                # 跳到博客目录
rg -l "旧标题" -g "*.md" | fzf --preview 'bat --color=always {}'   # 找文件并预览
rg -l "旧标题" -g "*.md" | fzf | xargs -r nano         # 选中就交给编辑器

省下的其实不是时间,是”算了不改了”的那点烦躁。

⚠️ 我踩过的 5 个坑,提前替你踩了

现象 原因 怎么处理
bat 打开就停在分页界面,要按 q 才退出 默认使用分页器 别名里加 –paging=never
提示 z 命令不存在 没做 shell 初始化 把 eval “$(zoxide init bash)” 写进 rc 文件,重开终端
eza 满屏方块 终端字体没有图标字形 加 –icons=never,或换 Nerd Font 字体
rg 搜不到 node_modules 里的内容 默认尊重 .gitignore 加 –no-ignore(需要时再补 –hidden)
Ctrl+R 搜历史没反应 fzf 的键绑定没启用 重跑安装脚本时选启用,或手动 source 对应 key-bindings 文件

📦 装起来:三条命令搞定大半

# macOS(Homebrew)
brew install ripgrep fzf zoxide bat eza tmux lazygit btop

# Ubuntu / Debian(仓库里没收录的再单独装)
sudo apt install ripgrep fzf zoxide bat tmux btop

# Windows(Scoop)
scoop install ripgrep fzf zoxide bat eza lazygit btop

各发行版收录情况不一样:eza、lazygit 在部分老版本仓库里没有,可以直接下 release 二进制,或者用 cargo / go 装;Debian 系里 bat 的可执行文件名有时是 batcat,别名时留意一下。

📺 想先看视频版?

B 站 UP 主 x-cmd 有一期《10 个终端高手技巧,Zsh 竟然还能这么用?》,讲的是同一类思路——先把 shell 本身调教顺手,再配合上面这些工具食用。

🐟 最后,说点心里话

陪伴清晨

我知道很多人第一次打开终端,是被”rm -rf /”的都市传说吓退的。可终端真实的样子,不是黑底白字的高冷,而是你把几十次重复劳动压成一行命令之后,那种”咦,我好像变强了一点点”的小确幸。

这篇文章里的工具没有一个是必须的,甚至你只留下 ripgrep 和 fzf,日子也会好过很多。工具的意义从来不是让你显得更专业,而是让你在深夜十一点,能早点合上电脑去睡觉。( ゚▽゚)/

如果你也有私藏的命令行小玩具,欢迎在评论区丢给我——我最近在收集”一条命令解决一件事”的清单,攒够十条就写第二篇。饿饿,饭饭,等你投喂。(๑•̀ㅂ•́)و✧

说明:文中工具均为开源项目,命令示例为日常用法演示,不同版本与发行版可能存在差异,以官方文档为准。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 共1条

请登录后发表评论