看了这个问题也关注这个问题很久了,很多人介绍的都是oh-my-zsh(一下简称omz)的一些特征。不可否认这是一个很优秀的框架,但zsh的世界不应该全是omz。这个回答,我想介绍一下zsh原生自带的一些功能,技巧。以及除了omz以外,有哪些优秀的插件框架。
关于叹号的用法
先说个很基本的用法,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> # 进入刚才的创建的目录
关于星号的用法
这里的星号是通配符的增强用法,在*()
中添加修饰限定匹配的文件。
基本语法:
m 修改日期
m的默认单位是天,也可以使用小时h,周w,月M m=minutes,d=days(default)w=week,M=Month +n older than n,-n younger than, just n equal to' # N
例子:
*(m0)
当天修改过的文件*(^m0)
当天未修改过的文件*(mh-3)
修改小于3小时的文件*(mw+2)
修改超过两星期的文件
L 文件大小
(WIP)
配置zsh
这一部分介绍的是bash支持的用法,而zsh默认不支持。如何去配置,完成这些功能。
C_X C_E 用默认的文本编辑器编辑命令
M_. 倒序一次遍历命令的最后一个参数