[ 分享 ] 来,我们来玩一玩 zsh

来,让我们来玩一玩 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=”主题名”来设置。看看主题配置文件,可以修改自己喜欢的颜色主题。

楼主你的 openSUSE 系统的默认 shell 也换成 zsh 了没?

没有,只是我用户的默认 shell 换成了 zsh。据说 root 的 shell 还是用 bash 来的好。只是图 zsh 的交互性好一点。

zsh 现在默认是开启自动补全的。

也许因为我安装了 oh my zsh 吧。因为不打算折腾配置的问题,所以就捡现成。oh my zsh 开发很活跃啊。这几天看更新非常频繁。自身也带了很多插件。虽然我基本不用。。。。。

像 Emacs 的配置我就选择自己写,没有用 purcell、Emacs Prelude、 Emacs24 Starter Kit。虽然我很喜欢 Prelude 的配置,但是他的配置太复杂了完全看不懂,还有很多对我来说不必要的多版本支持。。。。。

我喜欢用 oh-my-zsh 配合 zsh-syntax-highlighting 一起用,更赞,而且后者可以直接和前者集成,作为一个 plugin 使用,很赞,推荐!
代码在 github 上有

谢谢推荐!