什么是Zsh
Zsh和bash一样,是一种Unix shell,但大多数Linux发行版本都默认使用bash shell。但Zsh有强大的自动补全参数、文件名、等功能和强大的自定义配置功能。
替换Mac的bash
Zsh虽然功能强大,但刚上手配置比较麻烦。别担心,Github已经有开源项目oh-my-zsh。按照官方的文档安装,非常简单。
一、使用curl自动安装
curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh
二、手动安装
1.使用git clone 项目
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
2.备份~/.zshrc文件
cp ~/.zshrc ~/.zshrc.orig
3.创建新的zsh配置文件
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
4.设置zsh为默认shell
chsh -s /bin/zsh
5.重启Terminal或新建一个Terminal就可以看到效果了
接下来配置适合自己Zsh
1.主题修改,我比较喜欢前面是$符号,所以选择了steeef这款主题
$ vim ~/.zshrc
配置文件里找到:
ZSH_THEME="robbyrussell"
修改为:
ZSH_THEME="steeef"
这里是官方提供的各种主题,有截图参考oh-my-zsh-themes
2.插件的选择,支持git、brew、vi、osx等插件,具体请查看这里oh-my-zsh-plugins
3.按两下tab会有惊喜,比如git
选择oh-my-zsh
oh-my-zsh是基于zsh的功能做了一个扩展,方便的插件管理、主题自定义,以及漂亮的自动完成效果。
在Github上找关于zsh的项目时发现的,试用了一下觉得很方便,不用像上面文章里面提到的那么复杂,配置一些插件的名称即可使用相应的功能。
官网:https://github.com/robbyrussell/oh-my-zsh
评价:https://github.com/robbyrussell/oh-my-zsh/wiki/Testimonials
截图欣赏(Git插件):
再来一个自动完成:
定义hash快速进入目录:
在~/.zshrc中定义:
hash -d blog="/home/henryyan/work/blog/henryyan.github.com"
安装oh-my-zsh
进入Github的oh-my-zsh主页 https://github.com/robbyrussell/oh-my-zsh ,在下面有详细的安装方式。
自定义主题
在 https://github.com/robbyrussell/oh-my-zsh/wiki/themes 里面有很多主题可以选择,安装后只需要修改~/.zshrc的ZSH_THEME为文件夹的名称即可。
使用截图的主题
刚刚的几个截图的主题是我基于robbyrussell修改的,添加了当前登录用户的名称和主机名称。
但是oh-my-zsh的作者太懒了,我在Github上Fork了项目然后提交我修改后的主题一直也没有合并,如果喜欢的话可以直接Clone我的oh-my-zsh分支,然后使用手动安装的方式安装oh-my-zsh;
手动安装完以后可以把当前的PATH变量设置到~/.zshrc中:
1 2 | echo "export PATH=$PATH" >> ~/.zshrc source ~/.zshrc |
修改主题:
1 | vi ~/.zshrc |
1 | source ~/.zshrc |
自己修改主题
如果提供的主题没有一个如意的(我就没有看中一个),你可以参考别人主题截图:https://github.com/robbyrussell /oh-my-zsh/wiki/themes 然后看一下对应的~/.oh-my-zsh/themes/foo 的源码,然后根据自己的需要自定义,最后再修改一下~/.zshrc的ZSH_THEME配置就可以了。
启用插件
在~/.oh-my-zsh/plugins/里面有很多插件可以选择启动,默认已经启用git插件,如果你像我一样是一个开发人员(Java),我的插件启用如下:
1 | plugins=(ant mvn svn git) |
Maven插件的截图
官方插件一览:https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins-Overview
插件安装方法
参考此处安装好 zsh 和 oh-my-zsh 后,打开文件~/.zshrc
,其中有如下行:
plugins=(git)
将需要的插件按空格分开,放于此处即可。我的配置如下:
plugins=(git extract z sublime)
修改完后,如果需要在当前shell中生效,需要执行
source ~/.zshrc
git
oh-my-zsh 默认开启的插件,提供了大量 git 的alias。
详细列表请参见:
https://github.com/robbyrussell/oh-my-zsh/wiki/Plugin:git。
![](http://upload-images.jianshu.io/upload_images/44137-b6e9ba5d15e88b81.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/622)
extract
功能强大的解压插件,所有类型的文件解压一个命令x
全搞定,再也不需要去记tar
后面到底是哪几个参数了。
![](http://upload-images.jianshu.io/upload_images/44137-8ae00edef5e5c8dc.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
![](http://upload-images.jianshu.io/upload_images/44137-19c4861379da0110.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
sublime
平时使用sublime比较多,该插件可以使用命令行打开sublime。
常用命令如下:
st # 直接打开sublime
st file_a # 用sublime打开文件 file
st dir_a # 用sublime打开目录 dir
stt # 在sublime打开当前目录,相当于 st .
各种命令自动补全插件
除上面各种常用的插件外,官方还提供了大量插件,大部分是针对某些功能的命令补全,如docker, python, pip, ruby, vagrant等。
虽然 oh-my-zsh 提供了很多插件,不过也不要贪多哦,大量的插件会拖慢打开的速度,因此只安装你常用的就好了。
安装zsh-syntax-highlighting插件
同样地,我们要先下载它的源码,但在这里,我们可以利用一下oh-my-zsh的插件管理功能:
cd ~/.oh-my-zsh/custom/plugins
git clone git://github.com/zsh-users/zsh-syntax-highlighting.git
然后,我们打开~/.zshrc
文件,找到以下段落;
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git)
按照注释中的提示改成plugins=(git zsh-syntax-highlighting)
即可。
安装autojump插件。
同样地,我们需要先下载源码:
git clone git://github.com/joelthelion/autojump.git
然后安装该程序:
cd autojump
./install.py
最后,我们只需在~/.zshrc
文件中加入以下代码即可。
# install autojump
[[ -s ~/.autojump/etc/profile.d/autojump.sh ]] && . ~/.autojump/etc/profile.d/autojump.sh
安装Powerline-Shell插件
其过程与autojump的安装基本相同,先下载源码:
git clone https://github.com/milkbikis/powerline-shell
再安装:
cd powerline-shell
./setup.py install
最后再配置~/.zshrc
文件,在其末尾加入如下代码:
# install powerline-shell
function powerline_precmd() {
PS1="$(powerline-shell --shell zsh $?)"
}
function install_powerline_precmd() {
for s in "${precmd_functions[@]}"; do
if [ "$s" = "powerline_precmd" ]; then
return
fi
done
precmd_functions+=(powerline_precmd)
}
if [ "$TERM" != "linux" ]; then
install_powerline_precmd
fi
然后在cygwin中,我们就看到如下最终效果:
![](http://upload-images.jianshu.io/upload_images/2059652-9f4411b01bae2745.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
工欲善其事,必先利其器,享受zsh带给你的快捷吧