首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >当程序员学会「念咒语」:那些让你终端效率翻倍的隐藏技巧

当程序员学会「念咒语」:那些让你终端效率翻倍的隐藏技巧

作者头像
chouheiwa
发布2026-05-06 21:17:50
发布2026-05-06 21:17:50
1300
举报

你有没有想过,为什么《哈利波特》里的巫师们要花好几年学习各种咒语?

明明挥一下魔杖就能发光,为什么还要记住「Lumos」这个词?因为咒语是魔法世界的快捷键——你可以笨拙地描述"我想让魔杖发光",也可以干脆利落地念出一个词直接实现。

终端也是一样。

很多程序员用了好几年命令行,还在一个字母一个字母地敲命令、用鼠标选中复制粘贴、手动 cd 进层层嵌套的目录。这就像一个巫师每次施法都要念一大段咒语说明书——能用,但蠢。

今天这篇文章,就是你的《标准咒语书》第一册。

一、历史命令:命令行的「冥想盆」

还记得邓布利多的冥想盆吗?把记忆倒进去,需要的时候随时提取回顾。

你的终端里也藏着一个冥想盆——命令历史。只不过大多数人只会用方向键 ↑ 一条条翻,像在一堆记忆里大海捞针。

技巧一:前缀 + 方向键(很多人不知道)

这是我最想分享的技巧,因为它简单到离谱,但知道的人出奇地少:

先输入命令的开头几个字母,再按方向键 ↑,就只会搜索以这些字母开头的历史命令。

比如你想找之前用过的某条 git 命令,但 git 命令你敲了几百条。别傻傻地按 ↑ 翻了,直接输入 git co,然后按 ↑,终端只会在以 git co 开头的命令里跳转。

代码语言:javascript
复制
$ git co↑  
# 自动变成:git commit -m "fix: 修复登录bug"
# 再按 ↑:git checkout develop
# 再按 ↑:git config --global user.name "xxx"

这个技巧在 Zsh 里默认就能用。如果你用的是 Bash,需要在 ~/.inputrc 里加两行:

代码语言:javascript
复制
"\e[A": history-search-backward
"\e[B": history-search-forward

技巧二:Ctrl+R —— 真正的「速记忆咒」

如果说方向键 ↑ 是在记忆里翻页,那 Ctrl+R 就是阿瓦达索命般的精准打击——直接搜。

按下 Ctrl+R,终端进入反向搜索模式,你输入任意关键词,它会实时匹配历史命令。不用记命令开头是什么,只要记得命令里有什么词就行。

代码语言:javascript
复制
(reverse-i-search)`docker': docker exec -it mysql_container /bin/bash

找到了?按 Enter 直接执行,按方向键 → 先编辑再执行。没找对?继续按 Ctrl+R 往前翻。

这招配合后面要说的 fzf,会进化成「开挂模式」。

技巧三:感叹号魔法 —— 命令行的「影分身术」

《火影忍者》里的影分身之术为什么厉害?因为简短的几个字就能召唤出一大堆分身。

终端里也有类似的东西,叫历史展开(History Expansion):

咒语

效果

实战场景

!!

重复上一条命令

权限不够时:sudo !!

!$

上条命令的最后一个参数

mkdir /some/long/path → cd !$

!string

执行最近以 string 开头的命令

!git 重复上次的 git 操作

^old^new

把上条命令的 old 替换成 new

打错字了:cat /etc/hosst → ^hosst^hosts

其中 sudo !! 是最实用的一个。每次敲完一长串命令发现权限不够,不用重敲,直接 sudo !! 收工。

二、光标移动:你的手指不用离开键盘

很多人编辑命令行的方式是:发现打错了 → 用方向键一格一格移过去 → 删掉 → 打对的。

这就像霍格沃茨学生在走廊里一步一步走,而忘了自己会「幻影移形」。

Emacs 键绑定:终端的「幻影移形」

Mac 终端默认使用 Emacs 风格的键绑定,记住这几个核心的,够用一辈子:

移动类

  • Ctrl + A:跳到行首(A = 开头)
  • Ctrl + E:跳到行尾(E = End)
  • Ctrl + F:前进一个字符(F = Forward)
  • Ctrl + B:后退一个字符(B = Backward)
  • Option + F:前进一个单词(⚠️ 需先配置,见下方)
  • Option + B:后退一个单词(⚠️ 需先配置,见下方)

Mac 用户注意:如果你按 Option + F 输出的是 ƒ,按 Option + B 输出的是 ,这是正常的——Mac 默认把 Option 键用于输入特殊字符。需要手动配置:

  • Terminal.app:偏好设置 → 描述文件 → 键盘 → 勾选「将 Option 键用作 Meta 键」
  • iTerm2:Preferences → Profiles → Keys → General → 把 Left Option Key 设置为 Esc+

配置完重启终端,Option 组合键就能用了。

截图3:Option 键配置界面 - Terminal.app 或 iTerm2 的设置位置

删除类

  • Ctrl + W:删除前一个单词(最常用!)
  • Ctrl + U:删除到行首
  • Ctrl + K:删除到行尾(K = Kill)
  • Ctrl + Y:粘贴刚才删除的内容(Y = Yank)

举个例子,你敲了这么一行:

代码语言:javascript
复制
docker run -it --name my_container -v /path/to/local:/path/to/contaner ubuntu

发现 contaner 拼错了。菜鸟做法:按 ← 按 20 下。高手做法:Ctrl+W 删掉整个词,重新打。

更高手的做法:Ctrl+A 跳到开头,Ctrl+K 删掉整行,重新来(开玩笑的,有时候真不如重打)。

隐藏神技:Ctrl+X Ctrl+E

当你要编辑一条特别长的命令时,在命令行里改来改去太痛苦了。

Ctrl+X 然后按 Ctrl+E,终端会把当前命令行的内容扔进你的默认编辑器(通常是 vim 或 nano)。在编辑器里舒舒服服改完保存,命令自动执行。

这招在写复杂的 for 循环、管道组合时特别有用。

三、fzf:给你的终端装上「鹰眼」

如果说前面的技巧是学会了基础咒语,那 fzf 就是你的魔杖升级——从普通魔杖变成接骨木魔杖。

fzf 全称 fuzzy finder,模糊查找器。它能让你在海量数据中快速定位目标,就像《刺客信条》里的鹰眼视觉,世界变成灰色,只有目标在发光。

安装

代码语言:javascript
复制
brew install fzf
$(brew --prefix)/opt/fzf/install  # 重要!安装 shell 集成

安装完重启终端,你获得了三个超能力:

超能力一:Ctrl+R 进化版

还记得刚才说的 Ctrl+R 反向搜索吗?装了 fzf 之后,Ctrl+R 直接进化成可视化的模糊搜索界面:

代码语言:javascript
复制
❯ 
  695/695
> docker exec -it mysql_container bash
  docker-compose up -d
  docker ps -a
  docker build -t myapp .

支持模糊匹配,输入 dkex 也能找到 docker exec。上下键选择,Enter 执行。比原生 Ctrl+R 不知道高到哪里去了。

超能力二:Ctrl+T 文件搜索

Ctrl+T,fzf 会搜索当前目录下的所有文件,选中后自动插入路径。

再也不用 ls 一层层看、手动打路径了。尤其是当你要打开一个藏在 src/components/common/utils/ 里的文件时,Ctrl+T 输入 utils,几秒搞定。

超能力三:Alt+C 目录跳转

Alt+C(Mac 上是 Esc+c),搜索目录并直接 cd 进去。

这个配合下面要说的 zoxide,基本上可以告别手动 cd 了。

fzf 的搜索语法

fzf 支持一套简洁的搜索语法:

  • word:模糊匹配
  • 'word:精确匹配(前面加单引号)
  • ^word:以 word 开头
  • word$:以 word 结尾
  • !word:不包含 word

比如你想找所有 .tsx 结尾但不包含 test 的文件:tsx$ !test

四、Oh My Zsh:给终端穿上钢铁侠战甲

如果说 fzf 是升级魔杖,那 Oh My Zsh 就是给你的终端穿上一整套钢铁侠战甲。

代码语言:javascript
复制
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

装完之后,你获得了 300+ 个插件和 140+ 个主题的访问权限。但别贪心,插件装太多会拖慢启动速度。

必装插件(只推荐最有用的)

打开 ~/.zshrc,找到 plugins= 这一行,改成:

代码语言:javascript
复制
plugins=(git z zsh-autosuggestions zsh-syntax-highlighting)

git 插件(内置):提供了一大堆 Git 别名,常用的有:

  • gst = git status
  • gco = git checkout
  • gcm "msg" = git commit -m "msg"
  • gp = git push
  • gl = git pull

用几天就形成肌肉记忆了。

z 插件(内置):这个插件解决的是一个真实痛点——你每天都要 cd 进某些目录,但路径又臭又长:

代码语言:javascript
复制
cd /Users/zhangsan/Projects/company/standard-chartered/mobile-app/src/components

每次都打这么长,疯了吧?

z 插件会默默学习你的 cd 习惯,记住你常去的目录。用一段时间后,你只需要:

代码语言:javascript
复制
z components   # 直接跳转到上面那个目录
z mobile       # 或者用路径中的任意关键词
z sc src       # 甚至可以用多个关键词缩小范围

它的原理是「frecency」算法——综合考虑访问频率(frequent)和最近程度(recency)。你最近常去的目录权重最高。

这个插件用几天就回不去了,真的。

zsh-autosuggestions(需额外安装):这个插件是《少数派报告》里的预测系统——它会根据你的历史命令,实时显示灰色的建议。按 接受整条建议,按 Ctrl+→ 只接受一个单词。

代码语言:javascript
复制
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

zsh-syntax-highlighting(需额外安装):实时语法高亮,命令对了显示绿色,错了显示红色。让你在按 Enter 之前就知道有没有打错。

代码语言:javascript
复制
git clone https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

注意:zsh-syntax-highlighting 必须放在 plugins 列表的最后一个,否则可能不生效。

主题推荐:Powerlevel10k

如果你想让终端看起来很酷(而且信息量大),装 Powerlevel10k

这个主题的名字本身就是个彩蛋——《龙珠Z》里战斗力 10000 的超级赛亚人级别。用了它,你的终端提示符会显示当前目录、Git 分支、Node 版本等信息,而且渲染速度极快,不会有延迟感。

⚠️ 先装字体,否则会乱码! Powerlevel10k 用了很多特殊图标,需要安装专用字体:

  1. 1. 下载 MesloLGS NF 字体(4个文件都要装):
    • • MesloLGS NF Regular.ttf[1]
    • • MesloLGS NF Bold.ttf[2]
    • • MesloLGS NF Italic.ttf[3]
    • • MesloLGS NF Bold Italic.ttf[4]
  2. 2. 双击安装这些字体
  3. 3. 设置终端使用这个字体:
    • Terminal.app:偏好设置 → 描述文件 → 字体 → 选择「MesloLGS NF」
    • iTerm2:Preferences → Profiles → Text → Font → 选择「MesloLGS NF」
  4. 4. 重启终端

字体装好后,再安装主题:

代码语言:javascript
复制
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k

然后在 ~/.zshrc 里设置 ZSH_THEME="powerlevel10k/powerlevel10k",重启终端会自动运行配置向导。我之前截图的其实都是已经使用了这个主题的。

五、Rust 新贵:用现代工具替换古老命令

Unix 的那些经典命令——lscatfindgrep——诞生于几十年前。它们能用,但不够好用。

最近几年,一批用 Rust 编写的现代工具正在革新这些命令。它们的共同特点是:更快、更好看、更智能。

zoxide:z 的 Rust 增强版

前面说的 z 插件已经很好用了,但 zoxide 更强——用 Rust 重写,速度更快,而且支持 fzf 交互式选择。

代码语言:javascript
复制
brew install zoxide
echo 'eval "$(zoxide init zsh)"' >> ~/.zshrc

基本用法和 z 一样:z 关键词 跳转目录。但它多了一招:zi 关键词 会弹出 fzf 界面,当有多个匹配目录时让你交互式选择,而不是盲猜。

bat:更好的 cat

cat 命令只能傻傻地输出文件内容。bat 会自动加上语法高亮、行号,还能显示 Git 修改状态。

代码语言:javascript
复制
brew install bat
alias cat='bat --paging=never'

eza:更好的 ls

ls 的输出太素了。eza(注意不是 exa,exa 已经停止维护了)支持彩色输出、文件图标、Git 状态。

代码语言:javascript
复制
brew install eza
alias ls='eza --icons'
alias ll='eza -la --icons --git'
alias lt='eza --tree --icons --level=2'

fd 和 ripgrep:更快的 find 和 grep

  • fd:比 find 快 5-10 倍,语法更人性化。fd pattern 就能递归搜索。
  • rg(ripgrep):比 grep 快 10 倍以上,自动忽略 .gitignore 里的文件。
代码语言:javascript
复制
brew install fd ripgrep

这两个工具还能和 fzf 配合,让搜索体验更上一层楼。

六、我的 .zshrc 配置参考

最后分享一下我的核心配置,供参考:

代码语言:javascript
复制
# 历史记录优化
HISTSIZE=50000
SAVEHIST=50000
setopt SHARE_HISTORY          # 多终端共享历史
setopt HIST_IGNORE_ALL_DUPS   # 忽略重复命令
setopt HIST_IGNORE_SPACE      # 空格开头的命令不记录(隐私保护)

# 实用选项
setopt AUTO_CD                # 直接输入目录名就能 cd
setopt CORRECT                # 命令纠错

# 别名
alias ..='cd ..'
alias ...='cd ../..'
alias ls='eza --icons'
alias ll='eza -la --icons --git'
alias cat='bat --paging=never'
alias vim='nvim'

# 一个实用函数:创建目录并进入
mkcd() { mkdir -p "$1" && cd "$1"; }

# fzf 配置
export FZF_DEFAULT_COMMAND='fd --type f --hidden --exclude .git'
export FZF_DEFAULT_OPTS='--height=40% --layout=reverse --border'

写在最后

回到开头的比喻:终端是现代程序员的魔法世界,命令是咒语,快捷键是咒语的简化版。

一个刚入学霍格沃茨的巫师,可能要念完整的「Wingardium Leviosa」才能让羽毛飞起来;但一个熟练的巫师,可能只需要心念一动、魔杖一挥。

今天分享的这些技巧,就是帮你从「念完整咒语」进化到「挥一下魔杖」的过程。

从记住 Ctrl+R 开始,慢慢地,你会发现自己敲命令越来越快,手指越来越少离开键盘,终端不再是一个黑漆漆的、让人害怕的地方,而是一个你能掌控的、高效的工作空间。

就像《黑客帝国》里的 Neo,一开始看 Matrix 只能看到绿色代码雨,后来能直接看到金发美女。

终端效率的提升也是这样——当你熟练掌握这些技巧后,看着命令行,你看到的不再是一堆字符,而是无限的可能性。

如果你觉得有用,欢迎转发给还在一个字母一个字母敲命令的朋友。毕竟,独乐乐不如众乐乐——让他们也体验一下「念咒语」的快感。

引用链接

[1] MesloLGS NF Regular.ttf: https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf [2] MesloLGS NF Bold.ttf: https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf [3] MesloLGS NF Italic.ttf: https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf [4] MesloLGS NF Bold Italic.ttf: https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 猿族技术生活杂谈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、历史命令:命令行的「冥想盆」
    • 技巧一:前缀 + 方向键(很多人不知道)
    • 技巧二:Ctrl+R —— 真正的「速记忆咒」
    • 技巧三:感叹号魔法 —— 命令行的「影分身术」
  • 二、光标移动:你的手指不用离开键盘
    • Emacs 键绑定:终端的「幻影移形」
    • 隐藏神技:Ctrl+X Ctrl+E
  • 三、fzf:给你的终端装上「鹰眼」
    • 安装
    • 超能力一:Ctrl+R 进化版
    • 超能力二:Ctrl+T 文件搜索
    • 超能力三:Alt+C 目录跳转
    • fzf 的搜索语法
  • 四、Oh My Zsh:给终端穿上钢铁侠战甲
    • 必装插件(只推荐最有用的)
    • 主题推荐:Powerlevel10k
  • 五、Rust 新贵:用现代工具替换古老命令
    • zoxide:z 的 Rust 增强版
    • bat:更好的 cat
    • eza:更好的 ls
    • fd 和 ripgrep:更快的 find 和 grep
  • 六、我的 .zshrc 配置参考
  • 写在最后
    • 引用链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档