看了這個問題也關注這個問題好久了,不少人介紹的都是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_. 倒序一次遍歷命令的最後一個參數遍歷