命令行让我效率翻倍的几个习惯

作者:秃头码农 发布时间: 2025-05-02 阅读量:64 评论数:0

先声明,标题里的「翻倍」是夸张。真实情况大概是每天省 20 到 40 分钟,一年下来一百多小时,也不算少。

下面这七个习惯是我十年里筛下来的。我删掉了很多「看起来酷但其实用不上」的技巧,留下的每一条我都还在天天用。

习惯一:把 Ctrl+R 用到极致

这是投入产出比最高的一个,没有之一。

但光会按 Ctrl+R 不够,关键是配置:我把历史记录条数设成了 100000,开了跨会话共享,去掉了重复项,并且忽略以空格开头的命令(用来敲含密码的命令)。

更进一步,我装了模糊搜索版本的历史检索。区别在于:原生 Ctrl+R 只能匹配连续子串,模糊版可以敲 dkr ps 匹配到 docker ps -a --format ...。我每天大概按 30 次,几乎每次都省下十几秒的回忆和打字。

习惯二:cd 这个动作应该消失

我统计过一次,我一天敲 cd 的次数超过 60 次,其中绝大部分是在五六个固定目录之间跳。

解决方案是频率排序的跳转工具:z proj 直接跳到最常用的那个匹配 proj 的目录。装上第一周我就再没敲过完整路径。

配套的一个小习惯是 cd -,在上一个目录和当前目录之间来回切。这个是内置的,很多人不知道。

习惯三:管道之前先看一眼

这是个安全习惯,不是效率习惯,但它救过我。

凡是要批量删除或者移动,我一定先把命令写成只输出的形式看一遍,确认无误再加上执行部分。比如先跑 find . -name '*.tmp',看清楚列表,再加 -delete

我见过同事把 find 的路径参数写错,直接 -delete,删掉了半个共享目录。多花五秒钟看一眼列表,这个习惯是绝对划算的。

习惯四:用 fzf 改造一切选择动作

凡是「从一堆东西里挑一个」的场景,我都接了模糊选择器:

  • 切分支:列出所有分支,模糊选,回车切换。
  • 杀进程:列出进程,模糊选,回车 kill。
  • 打开文件:列出目录下所有文件,选中直接进编辑器。
  • 看 git 历史:列出 commit,选中显示 diff 预览。

最后那个我用得最多。以前我要看某个改动,得先 git log 找 hash,复制,再 git show。现在一个命令,边翻边预览。

习惯五:别名要短,但别太聪明

我的别名只有 20 来个,都很短:g = git,gs = git status,gd = git diff。

我曾经犯过一个错,写了十几个特别复杂的别名,比如一个别名同时做 fetch、rebase、push。结果有天在别人电脑上工作,我完全不会用 git 了。而且那个复合别名在冲突时的行为我根本不清楚,出过一次事。

现在我的规矩是:别名只做缩写,不做逻辑。有逻辑的写成脚本,脚本我知道它在干什么。

习惯六:终端复用器,但只用三个快捷键

我用终端复用器五年了,但我只用三个功能:新建窗口、切换窗口、detach。

我试过学全套快捷键,背了三十多个,两周后忘光。后来我承认,我需要的就是「断线不丢任务」和「一个会话开几个窗口」。这两件事三个快捷键就够了。

它救过我一次比较惨的场景:我在跑一个四小时的数据迁移,笔记本 WiFi 断了。如果是直接 ssh,进程就跟着死了。有复用器,重连之后一切照旧。

习惯七:给长命令留个记号

有些命令我一年用两次,但每次都得重新查半天参数。我的做法是在家目录放一个 notes.md,里面按主题分段记这些命令,然后配一个快捷键,能模糊搜索这个文件并把选中的行填到命令行里。

现在这个文件有 200 多行。最常被翻出来的是一条 ffmpeg 命令和一条证书查看命令,都是那种「用的时候一定想不起来」的东西。

最后说说什么我放弃了

为了平衡一下,说几个我学过但最后放弃的:

  1. vi 模式的命令行编辑。我试了一个月,效率反而降低,因为我经常忘了自己在哪个模式。
  2. 特别花哨的提示符。我曾经的提示符显示 git 状态、node 版本、耗时、电池,结果每次回车有 300 毫秒延迟。现在只剩当前目录和 git 分支。
  3. 大量的自定义函数。我写过 40 多个 shell 函数,现在只剩 6 个。理由跟脚本一样:记不住的工具等于没有。

说到底,命令行的效率不来自于你会多少技巧,而来自于你把最高频的那几个动作打磨到了什么程度。我每天敲的命令里,大概 80% 集中在 15 个上。把那 15 个搞舒服,比学一百个新命令有用得多。

评论