「这是我参与2022首次更文挑战的第11天,活动详情查看:2022首次更文挑战」。
作者:Mintimate
Mintimate's Blog,只为与你分享
Zsh
几个月前,我们就介绍了ZSH(z shell)。Zsh对Bourne shell做出了大量改进,同时加入了Bash、ksh及tcsh的某些功能。
macOS和Arch Linux都默认使用Zsh作为默认Shell,你可以在Terminal输入:
echo $SHELL
判断当前Shell是否为Zsh:
如果你的Shell是
/bin/bash,你可以看看上篇文章:Linux/Mac如何配置zsh并使用Oh-my-zsh?让你的终端更加好用。
但是,Zsh有点难配置,或者是……“轮子”有点难造。好在我们可以使用“Zsh框架”,直接拿别人造好的“轮子”,让我们的Zsh更好的“跑起来”。
Oh-my-zsh
Oh-my-zsh就是个不错的“轮子”,上次文章其实也有提到怎么安装Oh-my-zsh,以及怎么切换皮肤。
激活oh-my-zsh,可以直接直观体会到:
- 丰富的代码提示:oh-my-zsh默认对文件和文件夹或注释和代码进行颜色分阶显示,增加Terminal在操作时候的可读性。
- 命令自动填充:对一些目录和文件操作的时候,我们甚至不需要提前用
ls或ll等目录对文件进行扫描或记忆,只需要按Tab键即可遍历填充。
实际上,Oh-my-zsh还支持很多丰富的插件,甚至可以说,Oh-my-zsh自带了很多丰富的插件,等着你去激活。
虽然很多人觉得Oh-my-zsh过于臃肿,以至于Terminal在启动过程中,需要花费好几秒去读取配置。但是,实际上你激活的插件适当,不是激活那么多插件,Oh-my-zsh并不会拖慢多少速度。如果实在觉得Oh-my-zsh臃肿,那么下次我介绍一下
zimfw?
本次教程就推荐大家我常用的插件,并演示如何使用。另外,如果想看Oh-my-zsh自带那些插件,可以查看:github.com/ohmyzsh/ohm…
encode64
哈哈,是不是以为我会第一个介绍git?先介绍一个好玩,关键时候有点用的插件。
简单滴说,文本和Base64互转。
首先是$HOME/.zshrc文件内的plugin,添加encode64来激活:
之后,不要忘记重载环境变量source。
不出意外就可以使用了:
# Base64编码
e64 "Hello World"
encode64 "Hello World"
# Base64解码
d64 SGVsbG8gV29ybGQ=
decode64 SGVsbG8gV29ybGQ=
当然,如果是一些Zsh关键字,比如
"、<等,记得转义哦。
现在,可以看到插件也不是很难,我们看看更多实用的插件。
git
这个插件,实际上是Oh-my-zsh安装时候,就自动激活的。目的很简单:简化git命令,使用aliases。
举个例子,我本来使用git命令,添加当前文件夹里所有文件进行,椅背commit,是不是需要:
git add --all
激活插件后,只需要:
gaa
是不是很方便?更多映射,可以查看:github.com/ohmyzsh/ohm…
比如,这里节选一些:
| 简化命令 | 原Git对应 | ||||
|---|---|---|---|---|---|
| g | git | ||||
| ga | git add | ||||
| gaa | git add --all | ||||
| gapa | git add --patch | ||||
| gau | git add --update | ||||
| gav | git add --verbose | ||||
| gap | git apply | ||||
| gapt | git apply --3way | ||||
| gb | git branch | ||||
| gba | git branch -a | ||||
| gbd | git branch -d | ||||
| gbda | git branch --no-color --merged | grep -vE "^([+ *] | \s*($(git_main_branch) | )" | xargs git branch -d 2>/dev/null |
| gbD | git branch -D | ||||
| gbl | git blame -b -w | ||||
| gbnm | git branch --no-merged | ||||
| gbr | git branch --remote | ||||
| gbs | git bisect | ||||
| gbsb | git bisect bad | ||||
| gbsg | git bisect good | ||||
| gbsr | git bisect reset | ||||
| …… | …… |
sudo
之后,我喜欢的插件是sudo插件。其实作用很简单:快捷添加sudo。
举个例子,我在Linux上,使用systemctl去操作启动,已经输入完命令,却发现自己没有在命令前,加提权的sudo,这个时候要把光标移动到最前面添加sudo么?
systemctl restart aria2
过去是这样的,但是如果使用sudo插件就不需要了。
在$HOME/.zshrc内添加sudo:
之后,source文件后,我们遇到上述情况,只需要按两下ESC,即可自动填充:
cp
cp插件,我平常也有使用,原理是使用rsync让你获得特性和更好的安全性:
插件定义后,就会有一个cpv的命令。比如,我们移动文件夹:
cpv payload_dumper-master temp --progress -r -hhh
其中:
--progress:显示进度条-r:递归-hhh:同free、du等命令的-h
zsh-syntax-highlighting
说了那么多自带的,现在讲两个非自带,第三方的。
首先是zsh-syntax-highlighting:github.com/zsh-users/z…
这个可以说,真的是让你Terminal更加好看让你的Terminal命令更有可读性╮( ̄▽ ̄"")╭。
其实就是输入命令时候,对文件夹、文件进行下划线标识。命令使用高亮颜色标识:
或者看看官方用例:
安装方法很简单啦,毕竟我们用Oh-my-zsh框架。只需要Git到Oh-my-zsh的plugins文件夹后激活即可:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
之后,在
$HOME/.zshrc内激活即可:
zsh-autosuggestions
接下来是第二个第三方插件。看名字,相信大家都知道这个是干什么的了:自动给出建议?
确实是这样,有点想编译器给出代码提示,比如:
可以看到,有灰色的提示。这个是根据你的
$HOME/.zsh_history来给你命令提示。
如果你觉得这个提示就是你想要的,只需要按方向键->,即可自动填充。
安装这个插件很简单(毕竟用了Oh-my-zsh框架(*≧ω≦*))
之后,和刚刚一样去激活即可:
不要忘记source文件嗷:
END
到此,推荐了5个插件,你的Oh-my-zsh有没有更好用呢?或者说Z shell有没有更好用呢?
如果有小伙伴有更好的插件推荐。欢迎评论区留言哦。
改天介绍介绍轻量化的Z Shell框架~~~又挖一个坑,哈哈。