为什么 Oh My ZSH 这么酷?
听完这几个字母前后,有一个词:ZSH。你可能会想:我以前怎么没听说过这个?哎呀!
ZSH (Z Shell) 是一场真正的革新,它用简单的解决方案实现了终端的现代化。但当你发现Oh My ZSH! ——一个能够提升你的生产力并改善你的工作流程的 ZSH 框架时,情况会变得更好。
那么,为什么呢?
- 不再需要
cd
(更改目录)命令。只需使用:
命令 | 结果 |
---|---|
folder/ |
/ 在末尾写上文件夹名称 |
.. |
返回一个文件夹(父目录) |
... |
返回两个文件夹(从父目录返回父目录) |
...... |
返回五个文件夹 |
/ |
转到根目录 |
~ |
回家 |
- |
跳转到上一个路径 |
-
递归路径扩展。
/u/lo/b
扩展为/user/local/bin
-
拼写纠正和近似完成,在输入目录名称时出现小错误时自动纠正
-
take
3 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
或使用 过滤所有grep
alias | 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.txt name-3.txt name-4.txt |
touch name.{css,js,test.js} |
创建具有不同扩展名的文件name.css ,,name.js name.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命令可以跟踪您最常访问的目录,并允许您通过很少的按键访问它们
我还有来自外部存储库的插件来添加更多功能:
- 自动建议会根据历史记录和完成情况在您输入时建议命令。
- 语法高亮:类似 Fish shell 的 ZSH 语法高亮
- ohmyzsh-full-autoupdate自动更新自定义插件和主题 Oh My Zsh
主题
还有很多主题,但我最喜欢的是Powerlevel10k,因为它易于设置和使用
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来源