继续上篇介绍个人终端环境。这篇介绍zsh和z,其实这不局限于os x,在全部的*nix系统中都是可用的。html
zsh
zsh做为bash的替代品,天然不少人要问:why zsh? 在Zsh Workshop 有个长长的功能列表,用来回答这个问题。这里讲下我选择zsh的缘由,固然,也是介绍zsh强大的功能。python
- 兼容bash。这使得切换到zsh没有任何成本。
- OS X默认的bash版本实在是太老了啊……
- 拼写纠正。你总会不当心打错命令。这时,zsh会进行自动拼写纠正,如图:
- 更强大的补全。
- 连按两次tab会列出全部的补全列表并直接开始选择。如图:
而且能够用方向键来选择,可是对我这种不多用方向键的人来讲只能猛敲tab了么,不是,zsh支持使用
<ctrl-n/p/f/b>
来选择,perfect! - 命令选项补全。有多少人依然记不住tar的命令选项?中枪的去抄20遍……在zsh中只须要键入
tar - <tab>
就会列出全部的选项和帮助说明。用了zsh以后man
少用了好多…… - 命令参数补全。zsh 对命令的参数补全也很强大。键入
kill <tab>
就会列出全部的进程名和对应的进程号。如图:这还不够,试试键入
kill sbin <tab>
,如图所示 自动为sbin这个进程名补全了进程号。kill进程不再用两步操做了。
- 连按两次tab会列出全部的补全列表并直接开始选择。如图:
- 更智能的历史命令。在用或者`方向上键`查找历史命令时,zsh支持限制查找。好比,输入`ls `而后再按方向上键,则只会查找用过的ls命令。而此时使用``则会仍然按以前的方式查找,忽略`ls`。
- 多个终端会话共享历史记录。常常有多个窗口,tab,tmux的多个session,panel。这些命令历史不能共享实在是很糟糕的回忆。可是有了zsh以后,这些确实成了回忆了,全部的命令历史均可以共享。
- 更智能的
cd
。首先你甚至不须要再输入cd了,直接输入路径便可。第二,在你知道路径的状况下,好比/usr/local/bin
你能够输入cd /u/l/b
而后按<Tab>
进行补全快速输入。这显然不够,zsh还支持路径替换,若是你其实想进入的是/usr/local/bin
,再也不须要../
了,直接在当前输入cd bin share
便可,则bin
会替换为share
。在以后我会介绍z和autojumper,目录跳转会更方便。 - 更强大的alias。zsh不只支持普通的alias,例如:
alias ls ='ls --color=auto'
。zsh还支持后缀alias,即以什么命令打开特定的后缀名文件。例如alias -s js=mvim
,输入hello.js
,会以vim打开该文件,而不在须要vim hello.js
。 - 通配符搜索。这也是我最爱的功能之一。以前讲过因为命令补全少用了不少
man
命令,而这个功能让我少用了不少find
命令。 通常的通配符搜索无非是ls -l *.log
,如图: - 在zsh中能够作到递归的通配符搜索。使用
**/
来递归搜索,如图
是否是在不少场景下能够取代find
?git
以上都是我感受迁移到zsh以后很是实用的功能。要想从头开始了解和学习zsh,能够访问A User’s Guide to the Z-Shell。不过你们都很忙,从头开始本身学习和配置会很累。因此如今说到zsh,不得不提的就是oh-my-zsh,oh-my-zsh是一个开源的zsh配置管理框架,提供了大量实用的功能,主题等。如今基本都是标配了吧。如图是我在用的默认zsh主题robbyrussell
,如图github
能够发它能自动显示当前所在的git分支以及当前本地状态(黄色的小叉表示本地有更新未提交)。shell
固然zsh也不是天衣无缝。在我使用过程当中有两点不是很舒服:vim
1. 自动纠正并不老是那么智能。如图:bash
可是能够对这些命令使用alias 加上nocorrect
前缀,如:session
alias rake deploy ='nocorrect rake deploy'
2. 一些符号是zsh中保留的,使用须要转义,如图:app
下面讲下zsh和oh-my-zsh的安装。框架
使用brew来安装zsh
brew install zsh
设置zsh为默认
在/etc/shells
文件末尾添加
/usr/local/bin/zsh
执行:
chsh -s /usr/local/bin/zsh
最后记得将~/.bash_prorile
或者~/.profile
等配置拷贝到~/.zshrc中。
安装oh-my-zsh
自动安装:
curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh
能够选择本身喜欢的主题。只须要修改~/.zshrc
文件中的ZSH_THEME
便可。
z和autojump
z和autojump的功能相似,前者是简单的shell脚本实现,后者由python实现,功能都是能够方便自动匹配到你最多使用的目录并跳转。我在用的是z,如图,我在根目录输入z github
能够自动跳转到我经常使用的notice501.github.com
这个目录,也就是本博客的工程目录。超级方便的工具。autojump用法相似,命令为j
而不是z
二者的安装方式:
z
git clone git@github.com:rupa/z.git
然后将z.sh放入环境变量便可。
autojump
autojump能够直接使用brew安装
brew install autojump
有问题和分享欢迎留言交流。也欢迎关注个人微博。