在Ubuntu上完美安装oh-my-zsh

 memo
 

前戏

查看系统当前使用的shell

1
2
$ echo $SHELL
/bin/bash

查看系统是否安装了zsh

1
2
3
4
5
$ cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

安装zsh

一般来说,直接运行

sudo apt-get install zsh

即可。当然也可以下载源Download zsh source,使用curl安装

curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh

把zsh设为默认终端

chsh -s $(which zsh)

重启系统,可使用

reboot

重启后,查看当前shell

1
2
$ echo $SHELL
/bin/zsh

安装oh-my-zsh

1
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh

配置

1
2
3
$ vim ~/.zshrc
ZSH_THEME="agnoster"
$ source ~/.zshrc

agnoster主题终端乱码的解决方案

1
2
3
$ git clone https://github.com/powerline/fonts
$ cd ~/fonts
$ ./install.sh

然后在配置终端,依次选择“编辑”->“配置文件首选项”,选择“自定义字体”,字体为“Ubuntu Mono derivative Powerline Regular”即可。

另外一种解决方案来自csdn:CoderMannul的博客
还有一种解决方案是

1
$ vi ~/.zshrc

在文件中添加内容:

1
export LC_ALL=en_US.UTF-8

并解除注释

1
export LANG=en_US.UTF-8

接着重启终端,或输入

source ~/.zshrc

即可。以上两种解决方案一般不用,只有在第一种方案不行时才尝试一下。

小彩蛋:在~/.zshrc中添加

1
export DEFAULT_USER="[你的username]"

即可隐藏固定的username@hostname信息。
另外,

1
$ vim ~/.oh-my-zsh/themes/agnoster.zsh-theme

注释掉最下面

1
2
3
4
5
6
7
8
9
10
11
## Main prompt
build_prompt() {
RETVAL=$?
prompt_status
prompt_virtualenv
prompt_context
prompt_dir
prompt_git
prompt_hg
prompt_end
}

中的一句

prompt_context

也能实现相同的效果。(一般不采用此方法)

启用插件

oh-my-zsh自带了一些默认主题,存放在~/.oh-my-zsh/plugins目录中,我们可以查看这些插件。
oh-my-zsh默认只启用git插件

1
plugins=(git)

如需启用更多插件,只需加入需启用的插件名称即可,如

1
plugins=(git history-substring-search)

小技巧

设置自动更新oh-my-zsh。默认情况下,当oh-my-zsh有更新时,都会给你提示。如果希望让oh-my-zsh自动更新,在~/.zshrc 中添加下面这句

1
DISABLE_UPDATE_PROMPT=true

要手动更新,可以执行

1
$ upgrade_oh_my_zsh

卸载oh-my-zsh,直接在终端中运行如下命令即可。

1
uninstall_oh_my_zsh

安装没带的插件

  • 安装zsh-syntax-highlighting语法高亮插件

    1
    2
    3
    $ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
    $ echo "source ${(q-)PWD}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc
    $ source ~/.zshrc
  • 安装zsh-autosuggestions语法历史记录插件

    1
    2
    3
    4
    5
    $ git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
    $ vim ~/.zshrc
    plugins=(git zsh-autosuggestions)
    source $ZSH_CUSTOM/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh(加在zshrc文件最后一行)
    $ source ~/.zshrc
  • 安装incr补全插件

    1
    2
    $ wget http://mimosa-pudica.net/src/incr-0.2.zsh
    $ mv ~/incr-0.2.zsh ~/.oh-my-zsh/plugins/

source ~/.oh-my-zsh/plugins/incr/incr*.zsh

一句加在zshrc文件末尾,然后

1
$ source ~/.zshrc

与vim的提示冲突的解决方案

使用自动补全插件可能会与vim的提示功能相冲突,如会报以下错误:

1
2
$ vim t
_arguments:451: _vim_files: function definition file not found

此时,将~/.zcompdump*删除即可

1
2
$ rm -rf ~/.zcompdump*
$ exec zsh

让Windows下的putty、secureCRT等工具支持Powerline,使得oh-my-zsh正常显示、不出现乱码

  • 将这些工具的编码改为UTF-8
  • 下载支持Powerline的字体(DejaVu for Powerline.zip),将解压后的tty文件拖入“C:\Windows\Fonts”下,重启工具更改设置,选择终端窗口使用的字体为“DejaVu for Powerline”即可。