一、前言
Zsh和bash一样,是一种Unix shell,但大多数Linux发行版本都默认使用bash shell。但Zsh有强大的自动补全参数、文件名、等功能和强大的自定义配置功能。
oh-my-zsh是基于zsh的功能做了一个扩展,方便的插件管理、主题自定义,以及漂亮的自动完成效果。oh-my-zsh是一个社区驱动用于管理zsh的框架,囊括了140多个主题,200多个可选插件(如rails, git, OSX, hub, brew, ant, php, python etc.)。
详细的可以看以下教程:
https://linuxtoy.org/archives/zsh.html
https://github.com/YoungZHU/oh-my-zsh
二、安装
首先,安装zsh:
sudo apt-get install zsh
接下来我们需要下载 oh-my-zsh 项目来帮我们配置 zsh,on-my-zsh地址:https://github.com/robbyrussell/oh-my-zsh/采用wget安装:
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
失败,提示Git没有安装。。。需要提前安装Git,可以参考我这篇文章:http://blog.csdn.net/u011781521/article/details/53861807 安装后再试
或者采用curl安装:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
默认安装完成Oh-My-Zsh的样式如下:(重启终端后有效)
Oh-My-Zsh的默认配置文件在:~/.zshrc
编辑~/.zshrc 他默认的主题是:robbyrussell 修改 ZSH_THEME 的值就可以更换主题。
sudo gedit ~/.zshrc
修改主题为:agnoster
修改后保存,从新开个终端、效果如下:
ZSH_THEME="candy" 这个是命令分两行,上面一行显示时间
ZSH_THEME="bira" 也是占两行,但没显示时间
ZSH_THEME="sporty_256" 占两行,把原来的提示符放右面了
ZSH_THEME="robbyrussell" 这个是比较简单朴素的命令提示符,默认就是这个
ZSH_THEME="agnoster" 特别炫酷
可以通过访问 ~/.oh-my-zsh/themes/ 目录查看哪些可选的主题
$ tree themes
提示: zsh: command not found: tree
更多关于各个主题的详细介绍见 zsh themes ,另外还有不少并不是自带的主题,见 more external themes。
确认zsh是否安装成功
zsh --version
这时的zsh 基本已经配置完成,你需要一行命令就可以切换到 zsh 模式,终端下输入以下命令
chsh -s /bin/zsh
文字和背景采用系统主题,透明度设为10%,下面的样式采用Tango,设置好后,效果如下:
将 Zsh 设置为默认 Shell(不建议更改 root 用户的默认 shell)
显示Zsh路径
whereis zsh
chsh -s /bin/zsh
会提示输入密码,然后重新登录就好了,或者通过
sudo chsh -s $(which zsh)
设置zsh为默认shell。
echo $SHELL确认zsh是否是默认SHELL,输出/bin/zsh
然后重启系统!!!!
三、修改Oh-My-Zsh agnoster匹配字体
从上图我们可以明显的发现,显示效果中有乱码,这是因为字体没适配。我们需要下载支持Powerline的字体。
1、下载地址:https://github.com/powerline/fonts
2、下载完成双击安装
安装 powerline fonts
// 下载powerline fonts项目
git clone https://github.com/powerline/fonts
// 执行安装
./fonts/install.sh
默认Ubuntu 终端使用的是 Ubuntu mono regular字体 13字号,设置成Ubuntu Mono derivative Powerline字体后,效果如下:
终端右键---->配置文件---->配置文件首选项---->选择自定义字体,Ubuntu Mono derivative Powerline
修改之后、就能显示了
但是他前面还有一串字符、也要把他去掉、通过在~/.zshrc中添加export DEFAULT_USER=”username”可以隐藏固定的user@hostname信息
export DEFAULT_USER=`fendo` // 在.zshrc中添加或者修改默认用户为自己,开启终端后就不会显示自己的用户名信息
保存、重新开个终端、会发现前面的信息就被去掉了。
四、使用
1、zsh 的补全模式更方便
zsh 中按两下 tab 键可以触发 zsh 的补全,所有待补全项都可以通过键盘方向键或者
2、zsh 支持命令选项补全
zsh 除了支持目录的补全,还支持命令选项的补全,例如 ls -
3、zsh 支持命令参数补全
以前想 kill 掉一个进程,我的做法是 ps aux | grep "进程名" 然后记下 id,再 kill id。在 zsh 下,只需要 kill 进程名
4、zsh 支持更加聪明的目录补全
以前比如想进入一个比较深的目录,比如 /tmp/age/back/create/delete/efcs/fack/goo,就得在 bash 下面打半天,不停的 tab 去补全一个正确的路径出来。在 zsh 下,只需要输入每个路径的头字母然后 tab 一下: cd /a/b/c/d/e/f/g