macOS下配置ZSH和oh-my-zsh

macOS下配置ZSH和oh-my-zsh

好用是其次,主要是好看(逃)

图 / なかす

记得自己上学期做C语言的课后作业,一般都是在terminal里用GCC调试的,然而天天看着shell一成不变的样式未免有些视觉疲劳。

然后最近对着屏幕发呆,突然想到以前看到过人家终端用的shell是ZSH,主题相当漂亮,于是我就心血来潮也想尝试下了。(给我也整一个!.jpg)

测试证明macOS自带终端对oh-my-zsh兼容性不是很好,想要最好的体验建议使用iTerm


先放效果图,使用的主题是agnoster


升级ZSH

一般我们Mac的终端没有配置时是这样的。

当然,如果不想折腾shell,那也可以就修改下命令行提示符,在~/.bash_profile里把环境变量PS1改改,效果也是不错的。(例如我的MBP)

首先我们先确保Mac里是带ZSH的,输入cat /etc/shells。一般来说是以下的结果:

1
2
3
4
5
6
7
8
$ cat /etc/shells

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

也就是macOS一般是自带很多shell的,其中就包括ZSH。但因为不知道自带的年代有多久远,还是更新下比较好。

我用的是brew,如果没有安装过的话请自行谷歌或者百度查看安装方式。假设已经装好brew了,那我们就输入brew install zsh(终端输出略)。

升级完成后,我们将终端从bash切换为zsh:

1
2
3
$ chsh -s /bin/zsh
Changing shell for xxx.
Password for xxx:

输入密码,重启终端,搞定。


安装并配置oh-my-zsh

安装

然后我们就成功的切换到了zsh,然而看起来样式还是挺普通的(所以图略),那我们接下去安装oh-my-zsh。

我们可以用curl或者wget,从Github上下载.sh文件并执行。

方法一:

1
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

方法二:

1
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

等它安装完成之后,我们再重启终端,然后就发现!

瞬间不一样啦。

配置

oh-my-zsh的配置文件是~/.zshrc,此处仅讨论主题与自动补全功能,其他内容请点击这里前往Github项目页查看。

主题

我们用vim打开配置文件,发现默认的主题是robbyrussell

如果想换其他主题,我们可以这里查看其自带的更多主题,这里我们使用agnoster主题。

如果你仔细看的话会发现,为了截图方便我已经事先注释好了嘿嘿

Escape:wq、回车、重启终端。

然后大概率会出现这样的问题:

实际上就是字体原因导致特殊字符无法正常显示,在此安利powerline字体。(点击这里查看powerline官方文档。)

换上自己喜欢的powerline字体,然后就显示正常啦:

自动补全功能(incr)*

来看下官方的Demo图,感觉是很有用的:

我们可以通过官网来下载。

安装步骤如下(此处有参考一介布衣

1
2
3
4
5
6
7
8
9
10
11
$ cd /.oh-my-zsh/plugins
$ sudo mkdir incr
$ cd incr
#用管理员权限创建文件夹并进入
$ sudo mv ~/Downloads/incr-0.2.zsh ~/.oh-my-zsh/plugins/incr/
#用管理员权限把下载下来的文件放入上面的路径中
$ ls
incr-0.2.zsh
#检查一下
$ chmod 777 incr*.zsh
#然后我们给拷贝进去的文件上最高权限

接下来,配置~/.zshrc文件:

1
$ vi ~/.zshrc

插入source ~/.oh-my-zsh/plugins/incr/incr*.zsh,参考第79行。(路径取决于你存放该文件的位置)

保存并退出,输入source ~/.zshrc,然后

Enjoy! =w=

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

评论

You forgot to set the shortname for Disqus. Please set it in _config.yml.