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