Oh My ZSH
ZSH (Z Shell) 是一种强大的命令行解释器,具有丰富的功能和高度的可定制性。相比于传统的 Bash,ZSH 提供了更强大的自动补全、语法高亮、插件支持等功能,使得命令行操作更加高效和便捷
Oh My Zsh 是基于 zsh 命令行的一个扩展工具集,提供了丰富的扩展功能,它是一款社区驱动的命令行工具,正如它的主页上说的,Oh My Zsh 是一种生活方式。它基于 zsh 命令行,提供了主题配置,插件机制,已经内置的便捷操作。给我们一种全新的方式使用命令行
切换使用Zsh
Mac系统默认使用dash作为终端,安装iTerm2后,默认使用zsh作为终端,如果没有,可以通过以下命令切换到zsh
chsh -s /bin/zsh

可以通过以下命令查看当前使用的shell
echo $SHELL
安装Oh My Zsh
# use curl
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# or use wget
sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
修改配色(可选)
如果觉得默认的配色不顺眼,可以修改iTerm2的配色,网上有很多现成的配色方案,下载后安装指引导入即可
Oh My Zsh插件
在安装完Oh My Zsh后,会默认安装一些插件
~ ls ${ZSH}/plugins
其中${ZSH} 是Oh My Zsh的安装目录,默认是~/.oh-my-zsh,除此之外,还有一个变量${ZSH_CUSTOM},表示自定义插件和主题的目录,默认是~/.oh-my-zsh/custom,我们安装的插件一般放在${ZSH_CUSTOM}/plugins目录下(放在默认目录也可以),主题同理
插件配置
在~/.zshrc文件中,有一个plugins变量,表示启用的插件列表,默认是
plugins=(git)
有新增插件时,都需要在这里添加插件名称,表示启用这个插件,如果是默认安装的插件也一样需要配置才能启用,例如
plugins=(
git
autojump
zsh-autosuggestions
zsh-syntax-highlighting
...
)
修改完成配置后,需要重新加载配置文件或者新打开一个终端窗口,才能生效
~ source ~/.zshrc
常用插件
语法高亮
在命令行高亮显示语法
~ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
命令自动补全
根据历史记录和完成情况给输入的命令提供建议
~ git clone https://github.com/zsh-users/zsh-autosuggestions.git ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
autojump
autojump这个插件非常实用,功能是实现目录间快速跳转,想去哪个目录直接 j + 目录名(甚至不用输全),不用在频繁的 cd 了
安装autojump
brew install autojump
配置autojump,在~/.zshrc文件中添加
plugins=(
...
autojump
)
# set autojump
[ -f /usr/local/etc/profile.d/autojump.sh ] && . /usr/local/etc/profile.d/autojump.sh
重新加载配置文件
~ source ~/.zshrc
插件使用示例,这个插件 会根据历史记录来计算各个目录的权重,使用j命令跳转到指定目录
# 例如我们执行过cd /Users/ssgeek/Documents/test,那么下次执行`j test`或者`j te`就可以快速跳转到这个目录
~ cd ~
~ cd /Users/ssgeek/Documents/test
~ cd -
~ j test
Oh My Zsh主题
在安装完Oh My Zsh后,会默认安装一些主题,Oh My Zsh 提供了丰富的主题,也可以在External-themes查看主题的效果(有些主题并没有收录到这个文档中,因此安装Oh My Zsh时也不会自动安装)
可以通过修改~/.zshrc文件中的ZSH_THEME变量来切换主题,默认是robbyrussell
~ ls ${ZSH}/themes
~ cat .zshrc | grep ZSH_THEME
ZSH_THEME="robbyrussell"