Oh My Zsh 替换你的 Bash Shell

Oh-My-Zsh is an open source, community-driven framework for managing your ZSH configuration. It comes bundled with a ton of helpful functions, helpers, plugins, themes, and a few things that make you shout…

Oh My ZSH!

Oh My Zsh

1. Oh My Zsh 简介

无意中看见了 Linux 的一款 Shell,相比于 Bash 极其美艳,决定入坑试水一下,不试不知道,一试绝对有惊喜,不仅外观美艳而且功能强大,那还有不替换 Bash 的理由吗?搞起搞起……

Linux 提供了很多种 Shell ,想要查看系统有安装哪些 Shell 可以通过命令:chsh -l 或者 cat /etc/shells 进行查看。

cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

其中 Bash 是绝大多数 Linux 系统默认的 Shell,虽然 Zsh Shell 没有被所有 Linux 预安装,但几乎每一款 Linux 都包含 Zsh Shell, 根据不同版本的 Linux 可以用 apt-get、yum 等包管理器进行安装。

但是我们今天介绍的并非是 Zsh,而是 Oh My Zsh,这是个什么鬼了?虽说 Zsh Shell 很牛逼,但配置相当麻烦,所以阻挡了好多人尝试的勇气(我想这也是为啥 Zsh 不被 Linux 设为默认 Shell 的原因吧),但是永远不要低估一个爱折腾程序猿的创造力,国外一程序猿真就创造出了一款易于使用的 Zsh 版本: Oh My Zsh

Oh My Zsh 几乎兼容日常使用的所有 Bash Shell 指令,让你可以无缝接入,不需要再去花额外的时间去适应。当然还扩展了大量炫酷的指令,要不然干嘛用它对吧,而且支持更换主题和插件机制。下面就开始搞起吧!

2. 安装

安装 Oh My Zsh 首先需要安装 git 和 zsh,如果已经安装,请自行忽略。本文是基于 CentOS 介绍,其它 Linux 大致相同。

2.1 git 和 zsh 安装

# git
sodu yum install git

# zsh
sodu yum install zsh

2.2 Oh My Zsh 安装

Oh My Zsh 提供了 curlwget 两种安装方式,选择任意一种自己方便的方式即可。

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

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

3. 配置使用

3.1 切换 Shell

安装完成之后,使用以下命令即可切换当前 Shell:

# chsh -s /bin/zsh

usermod $USER -s /usr/bin/zsh

退出当前终端连接,再次登入即可看到当前的 Shell 已经成功更改为 Oh My Zsh。

3.2 更改主题

Oh My Zsh 的配置文件路径为:~/.zshrc,配置文件中的 ZSH_THEME 就是主题配置字段,如下默认为 robbyrussell 主题配色。更多主题配色可参考 Oh My Zsh 主题 ,这里我推荐是用 ys 主题。

ZSH_THEME="robbyrussell"

3.3 其它 Linux 用户配置使用

Linux 其它用户想要使用 Oh My Zsh Shell,只需要拷贝当前用户家目录下的 ~/.zshrc 配置文件到当想要使用 Oh My Zsh Shell 用户的家目录下即可。需要注意的是配置文件中 Oh My Zsh 安装路径其它用户可以访问的到,所以最好更改为绝对路径,如下:

export ZSH=/home/ehlxr/.oh-my-zsh

4. 插件配置

Oh My Zsh 支持插件机制,配置插件可以大大简化相关繁琐重复的命令。例如默认开启的 git 插件,就可以使用以下图表中的简写命令了:

Oh-My-Zsh Git Aliases

那如何配置其它的插件了?只需要在 Oh My Zsh 的配置文件 ~/.zshrc 中找到 plugins=(git) 字段,配置插件的名称即可,多个插件使用空格隔开。

那支持哪些插件了?Oh My Zsh 安装目录下的 plugins 目录下就是支持的所有插件。例如:ls ~/.oh-my-zsh/plugins 就可以看到所有支持的插件名称了。

Oh My Zsh 支持插件的简写说明可以参看 oh-my-zsh Plugins wiki

5. 常用命令简介

  • l 等价与 ls -la,查看当前目录下所有文件。
  • 打开目录不需要再敲 cd,直接输入目录名即可。
  • TAB 提示更加聪明。
  • 聪明的历史记录,例如:敲下 ls 命令,按下键盘 up 按键,就会带出以 ls 开头的历史记录命令。

6. 常用插件

.zshrc 配置

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
export JAVA_6_HOME=$(/usr/libexec/java_home -v 1.8)
export JAVA_7_HOME=$(/usr/libexec/java_home -v 1.8)
export JAVA_8_HOME=$(/usr/libexec/java_home -v 1.8)

export ZSH=/Users/ehlxr/.oh-my-zsh

ZSH_THEME="ys"

plugins=(git wd autojump sublime sudo zsh-autosuggestions zsh-syntax-highlighting extract history-substring-search)

source $ZSH/oh-my-zsh.sh

alias h="hexo cl && hexo g && gulp && hexo d"
alias gacp='git add --all && git commit -v && git push'
alias gacpm='git add --all && git commit -m "update" && git push'
alias js='j --stat'

source ~/.bash_profile

6.1 git 插件

  • 安装

    直接在 .zshrc 中启用。

  • 效果

    默认开启的插件,提供了大量 gitalias ,参看 oh-my-zsh Plugins wiki

6.2 wd 插件

  • 安装

    直接在 .zshrc 中启用。

  • 效果

    给常用目录添加一个标识,然后就可以快速的切换到常用的目录。参考 wd

6.3 autojump 插件

  • 安装

    # Mac,可以使用 brew 安装:
    brew install autojump
    
    # CentOS 可以使用 yum 安装:
    yum install -y epel-release
    yum install -y autojump-zsh
    

    然后在 .zshrc 中启用。

  • 效果

    autojump 按照你的使用频率记录路径,使得目录的跳转更为方便。参考 autojump

6.4 sublime插件

  • 安装

    直接在 .zshrc 中启用。

  • 效果

    使用命令行打开 sublime。 常用命令如下:

    st          # 直接打开sublime
    st file_a   # 用sublime打开文件 file
    st dir_a    # 用sublime打开目录 dir
    stt         # 在sublime打开当前目录,相当于 st .
    

6.5 sudo 插件

  • 安装

    直接在 .zshrc 中启用。

  • 效果

    2esc 会在命令前自动输入 sudo

6.6 zsh-autosuggestions 插件

  • 安装

    git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
    

    然后在 .zshrc 中启用。

  • 效果

    根据历史记录智能自动补全命令,输入命令时会以暗色补全,按方向键右键完成输入。

6.7 zsh-syntax-highlighting 插件

  • 安装

    git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
    

    然后在 .zshrc 中启用。

  • 效果

    fish shell 风格的语法高亮插件。输入的命令根据主题自动高亮。比如我的主题是 ys-modified,输入正确的命令是黄色,输入错误的命令是红色。

6.8 extract 插件

  • 安装

    直接在 .zshrc 中启用。

  • 效果

    功能强大的解压插件,所有类型的文件解压一个命令 x 全搞定,再也不需要去记 tar 后面到底是哪几个参数了。

6.9 history-substring-search 插件

历史命令搜索插件,如果和 zsh-syntax-highlighting 插件共用,要配置到语法高亮插件之后。

  • 安装

    git clone https://github.com/zsh-users/zsh-history-substring-search.git $ZSH_CUSTOM/plugins/history-substring-search
    

    然后在 .zshrc 中启用。

  • 效果

    上下键查询历史命令记录,可模糊匹配历史命令记录中任意字符串。