看了这个问题也关注这个问题好久了,不少人介绍的都是oh-my-zsh(一下简称omz)的一些特征。不能否认这是一个很优秀的框架,但zsh的世界不该该全是omz。这个回答,我想介绍一下zsh原生自带的一些功能,技巧。以及除了omz之外,有哪些优秀的插件框架。bash
先说个很基本的用法,Shell都支持!!
,!^
,!$
,!*
。这四种用法分别指代上一条命令、上一条命令的第一个参数、上一条命令的最后一个参数、上一个命令的所有参数。能够按
zsh% echo 1 2 3 4 1 2 3 4 "!!" # echo 1 2 3 4 "!^" # 1 "!$" # 4 "!*" # 1 2 3 4
非首位参数能够用!:指定编辑器
zsh% echo 1 2 3 4 1 2 3 4 "!:1" # 1 "!:-3" # echo 1 2 3 "!:1-1" # 1 "!:3-4" # 3 4
zsh还支持!?
这种用法,上面的基本叹号用法只能查找上一个命令的参数。这种用法能够更灵活的搜索。插件
sudo !?mv # 移动刚才移动失败的文件 cd !?mkdir?:*<tab> # 进入刚才的建立的目录
这里的星号是通配符的加强用法,在*()
中添加修饰限定匹配的文件。
基本语法:code
m的默认单位是天,也能够使用小时h,周w,月M m=minutes,d=days(default)w=week,M=Month +n older than n,-n younger than, just n equal to' # Nzsh
例子:配置
*(m0)
当天修改过的文件*(^m0)
当天未修改过的文件*(mh-3)
修改小于3小时的文件*(mw+2)
修改超过两星期的文件(WIP)搜索
这一部分介绍的是bash支持的用法,而zsh默认不支持。如何去配置,完成这些功能。
C_X C_E 用默认的文本编辑器编辑命令
M_. 倒序一次遍历命令的最后一个参数遍历