为什么 Oh My ZSH 这么酷?

2025-06-05

为什么 Oh My ZSH 这么酷?

听完这几个字母前后,有一个词:ZSH。你可能会想:我以前怎么没听说过这个?哎呀!

ZSH (Z Shell) 是一场真正的革新,它用简单的解决方案实现了终端的现代化。但当你发现Oh My ZSH! ——一个能够提升你的生产力并改善你的工作流程的 ZSH 框架时,情况会变得更好

酷兄弟

那么,为什么呢?

  • 不再需要cd(更改目录)命令。只需使用:
命令 结果
folder/ /在末尾写上文件夹名称
.. 返回一个文件夹(父目录)
... 返回两个文件夹(从父目录返回父目录)
...... 返回五个文件夹
/ 转到根目录
~ 回家
- 跳转到上一个路径
  • 递归路径扩展。/u/lo/b扩展为/user/local/bin

  • 拼写纠正和近似完成,在输入目录名称时出现小错误时自动纠正

  • take3 in 1 命令,创建目录并自动更改其路径

命令 结果
take <url_file> 下载 gzip 文件(.gz.bz2.xz)并解压缩
take <git_repo> 从 URL 克隆 git repo ( http, ssh)
take <folder> 创建新文件夹
  • zsh_stats将为您提供前 20 条命令的列表以及它们运行的​​次数

  • Tab 补全是另一个很棒的功能。例如,输入ls -并按下 Tab 键,TAB即可列出所有命令选项,以及它们的作用描述。

  • 别名命令。例如,使用 列出所有alias或使用 过滤所有grepalias | grep git

  • 通配符

命令 结果
ls *.txt 列出txt当前目录中的所有文件
ls **/*.txt 列出所有txt文件,包括子目录
ls **/(READ)*.* 查找以单词开头的文件READ
ls **/*(READ).* 查找以单词结尾的文件READ
ls **/*(READ)*.* 查找包含单词READ任意位置的文件
ls **/*(.) 仅搜索文件
ls **/*(/) 仅搜索文件夹
  • 扩展文件名和目录
命令 结果
touch name-{1..4}.txt 创建文件name-1.txt,,,name-2.txtname-3.txtname-4.txt
touch name.{css,js,test.js} 创建具有不同扩展名的文件name.css,,name.jsname.test.js
cp folder/name.js{,.bak} 创建文件结尾的副本.bak
diff folder/{new,old}/name.js 查看两个文件之间的差异
mkdir -p {source,build,man,help{/pages,/yelp,/images}} 创建完整的文件夹结构
wget http://site.com/folder{1,2}/pic{001,002}.jpg 下载多个文件
  • 展开环境变量,$ENV然后TAB

  • 展开kill命令,然后TAB

  • 历史子字符串搜索编写命令并按向上箭头循环以前的用法

  • 自动完成,使用 Tab 键在选项之间跳转,并按回车键进行选择。适用于目录、文件和命令

  • 运行 history 命令,!后跟历史记录中的数字,例如!137

  • 输入后!!会显示最后一条命令。如果命令因为需要管理员权限而失败,这很方便。在这种情况下,您可以输入sudo !!

插件

很多插件可供使用。建议您仔细研究所有选项,并选择最适合您需求的插件。

我的建议是:

  • sudo只需按两次 esc 即可轻松在当前或之前的命令前添加 sudo
  • command-not-found在找不到命令时提供建议安装的软件包
  • extract提取您传递的存档文件,它支持多种存档文件类型
  • git提供了很多别名和一些有用的函数
  • history-substring-search是 Fish shell 历史搜索功能的洁净室实现,您可以在其中输入历史记录中任何命令的任何部分,然后按选定的键(例如向上和向下箭头)来循环查看匹配项
  • 网络搜索添加了使用 Google、Wiki、Bing、YouTube 和其他流行服务进行搜索的别名
  • z命令可以跟踪您最常访问的目录,并允许您通过很少的按键访问它们

我还有来自外部存储库的插件来添加更多功能:

主题

还有很多主题,但我最喜欢的是Powerlevel10k,因为它易于设置和使用

p10k

Git

令人难以置信且完整的 Git 别名

Git 状态提示可以包含以下内容:

部分 意义
master 当前分支
#v1 HEAD 带有标签v1;在分支上时不显示
@5fc6fca4 当前提交;在分支或标签上时不显示
⇣1 本地分支比远程分支落后 1 个提交
⇡2 本地分支比远程分支领先 2 次提交
⇠3 本地分支比远程推送落后 3 个提交
⇢4 本地分支比远程推送提前了 4 个提交
*5 有 5 个藏匿处
merge 合并正在进行中(可能是其他操作)
~6 有 6 个合并冲突
+7 共有 7 个阶段性变化
!8 有 8 个未暂存的更改
?9 有 9 个未跟踪的文件

快捷方式

编辑长命令

ctrl+x+e在编辑器上打开命令以轻松编辑,一旦保存并关闭编辑器,它将在终端上更新

你可以设置你喜欢的编辑器,例如运行export EDITOR="code -w"使用 VSCode

停放命令

ctrl+q“停放” 当前正在输入的命令,并返回到提示符,以便您重新开始并输入另一个命令。一旦运行该命令,原始命令将取消停放并重新填充命令行,以便您继续。

如果您忘记在执行命令之前执行某个命令,那么这个功能非常有用。

显示别名

ctrl+x a将别名转换为真实命令

路径历史

ZSH 保留您访问过的目录的历史记录,以便您可以快速切换到其中的任何一个。

要查看列表,请键入dirs -v。通过键入 切换到此列表中的任意目录,~#其中#是列表中目录的编号。

钩子

您可以使用 ZSH Hooks 个性化操作(命令之前和之后)


好了,各位!祝您
编程愉快🖖

啤酒

来源

文章来源:https://dev.to/equiman/why-oh-my-zsh-is-so-cool-31gd
PREV
Java 太老了,2018 年该学什么? Java 太老了,2018 年该学什么?
NEXT
一秒钟用 VS Code 阅读 GitHub 代码