来,让我们来玩一玩 zsh。zsh 被称为终极 shell,但是并不难用,其实你只要像平时用 bash 一样用 zsh 就可以了。他的自动补全和纠错功能就能为你提供非常多的方便。
我们现在就来一步一步,逐步的挖掘 zsh 的功能。从用 zsh 完成 bash 也能完成的见到你功能开始。
第一步:取代 bash-- 像用 bash 一样用 zsh
最担心改用了 zsh 以后不能工作了。不用怕。 zsh 是完全兼容 bash。你只要把默认 shell 改成 zsh 然后把 .bashrc 里的东西直接拷到 .zshrc 里就好了。但是这里推荐一个非常好用的东东。— oh-my-zsh。这个东西有点像 emacs 里的 prelude,就是一份已经定义好了,实现了相当功能的配置文件。zsh 的可定制性是非常强的。新手会不知所措,这个 oh my zsh 很好的开始。
安装非常简单。运行:
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
就装好了。然后你需要把默认的 shell 改成 zsh。
chsh -s /bin/zsh
在这一步会提示你输入密码,你输入你的用户密码就好了。这时候需要重启电脑让他生效。
如果你用过相当一段 linux 你的 .bashrc 里可能已经有了一些自定义的东西,比如大量的 alias,不用舍弃他们。直接把他 copy 到 .zhrc 的文件尾就好了。这时候你就已经用上 zsh 了。你可以就像以前使用 bash 一样使用他。
第二步:通过简单的配置让 zsh 展现出实现超越 bash 的特性
zsh 拥有很多强大的功能,加上 oh my zsh 自身就有很多的插件。理论上来说 zsh 会非常强大,但是 oh my zsh 好像并没有开启这些强大的功能。你去看 .zshrc (由 oh my zsher 生成的) 发现很多配置,但是都是加注释的(建议仔细阅读并开启 oh my zsh 的自动更新功能)。当然他的注解非常详细。甚至他没有开启 zsh 非常强大的补全和纠错功能。现在我们通过五六行配置分分钟开启他。
# completion
autoload -U compinit
compinit
# correction
setopt correctall
# prompt
autoload -U promptinit
promptinit
现在你试试用你的 zsh 补全?比如在 jekyll 目录里会有一些子目录是 「_」开头的非常讨厌。比如 _layout。bash 需要你输入开头的几个字母才可以补全。但是现在,你只要输入 lay 他就会给你正确的自动补全。是不是非常的机智?
还有一个就是纠错功能。现在试试在命令行输入 zyppre。zsh 会自动提示你,是否换成 zypper。
有了强大的补全和纠错功能。并不需要什么特殊的学习,zsh 就能提供比 bash 更好的服务了。
第三步:超越一般 shell 功能
zsh 还有一样功能是我非常喜欢的。就是有类似桌面系统「文件关联」的功能。比如,你可以添加这样内容在你的 .zshrc 里。
alias -s org=emacs
下次你要打开一个 org 文件比如 gossip.org 的时候,只要直接在 zsh 上输入 gossip.org 他就会自动使用 Emacs 打开他。是不是非常酷!
其实 zsh 默认给所有的文件夹也关联了程序,那就是 cd 啦。以后再也不用输入 cd … 来返回上层目录了。只要直接敲 … 回车就可以了。比如要到主目录下的 bin 文件夹再也不用输入 cd bin 了。直接 bin 就可以了。
(bash 也可以直接 … 回到上层目录,但是不能输入直接下层目录到下层 目录,我看了一下,bash 只是简单的吧 … alias 到了 cd …)
zsh 还可以使用插件。你可以在主目录下的 .oh-my-sh 里找到狠多。具体的可以看 oh my zsh 的文档。其默认开启的,我比较喜欢的功能是可以查看 git 版本仓库的状态。比如你 cd 到一个 git 仓库时,他会在提示符前面现实现在处于哪一个分支,可以说省去了 git status 查看的麻烦。更多的大家可以自己摸索。
第四步:玩乐 zsh
这里就不展开了。你可以随心所欲的定制你的 zsh,各种插件,帮助你减少大量的工作。比较著名的像 autojump。这里就说一种我们这样的业余玩家也可以玩的。那就是主题。人靠衣装,有个好看的主题对一个 shell 来说其实也是蛮重要的。在 .oh-my-zsh 下有很多 zsh 的主题,你可以通过
ZSH_THEME=”主题名”来设置。看看主题配置文件,可以修改自己喜欢的颜色主题。