前言

目前使用最广泛也是许多系统默认带的 shell 就是 bash 了,然而其扩展性与定制性极其有限。首先推荐的就是 zsh 了:

The last shell you’ll ever need!

zsh ,是一款强大的虚拟终端,既是一个系统的虚拟终端,也可以作为一个脚本语言的交互解析器,其功能极其强大,只是配置过于复杂。

后来,有个“穷极无聊”的程序员可能是实在看不下去广大猿友一直只能使用单调的 bash , 于是他创建了一个名为 oh-my-zsh 的开源项目...

直到有了oh my zsh这个开源项目,让 zsh 配置降到 0 门槛。而且它完全兼容 bash

目前此开源项目已经拥有了 9w+ Star,拥有 1300 多个贡献者、200 多个可选插件、超过 140 个主题,还有一个自动更新工具。

运行环境

Oh My Zsh works best on macOS and Linux.
  • 类 Unix 操作系统
  • 需安装 zsh (4.3.9或更高版本),可以使用命令 zsh --version确认版本,安装 zsh 可参考此链接
  • (如果使用的是 MacOS,默认自带 zsh)

基本安装

如果提示缺少命令行工具,按照系统提示点击获取即可
  • 通过 curl

    • sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
  • 通过 wget

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

至此,一行命令安装完毕!

输出如下:

xxxx% sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" 
Cloning Oh My Zsh...
Cloning into '/Users/xxxx/.oh-my-zsh'...
remote: Counting objects: 831, done.
remote: Compressing objects: 100% (700/700), done.
remote: Total 831 (delta 14), reused 775 (delta 10), pack-reused 0
Receiving objects: 100% (831/831), 567.67 KiB | 75.00 KiB/s, done.
Resolving deltas: 100% (14/14), done.
Looking for an existing zsh config...
Found ~/.zshrc. Backing up to ~/.zshrc.pre-oh-my-zsh
Using the Oh My Zsh template file and adding it to ~/.zshrc
             __                                     __   
      ____  / /_     ____ ___  __  __   ____  _____/ /_  
     / __ \/ __ \   / __ `__ \/ / / /  /_  / / ___/ __ \ 
    / /_/ / / / /  / / / / / / /_/ /    / /_(__  ) / / / 
    \____/_/ /_/  /_/ /_/ /_/\__, /    /___/____/_/ /_/  
                            /____/                       ....is now installed!
Please look over the ~/.zshrc file to select plugins, themes, and options.
p.s. Follow us at https://twitter.com/ohmyzsh.
p.p.s. Get stickers and t-shirts at http://shop.planetargon.com.

使用 Oh My Zsh

1、默认配置文件地址:~/.zshrc

2、修改配置文件需重启终端或执行 source .zshrc

3、如果你在~/.bash_profile 文件里配置过其他环境变量,则需要在 ~/.zshrc 中加上此行让其他环境变量生效:source ~/.bash_profile

主题

ZSH_THEME 为配置的主题名称,要使用其他主题,只需更改值即可匹配所需主题的名称。
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
# ZSH_THEME="robbyrussell"
ZSH_THEME="avit"

注意:许多主题需要安装Powerline字体才能正确呈现。

插件

plugins 为配置插件的位置,不能使用逗号,每一个插件名称用空格隔开即可。
# Which plugins would you like to load?
# Standard plugins can be found in ~/.oh-my-zsh/plugins/*
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(
git
zsh-syntax-highlighting
zsh-autosuggestions
)

默认自带的 git 插件常用快捷命令如下:

gapa    git add --patch
gc!    git commit -v --amend
gcl    git clone --recursive
gclean    git reset --hard && git clean -dfx
gcm    git checkout master
gcmsg    git commit -m
gco    git checkout
gd    git diff
gdca    git diff --cached
gp    git push
grbc    git rebase --continue
gst    git status
gup    git pull --rebase

使用技巧

1、切换上级目录(进入或返回目录不需要敲cd

默认已提供简洁返回上级目录的命令,如 .........

2、路径别名

提前在配置文件定义好规则,形如:hash -d 别名=路径

配置后,直接敲入别名即可跳转到对应目录。

3、命令别名

.zshrc中加入配置行以alias开头,形如:alias gpd="git push origin dev"

那么执行gpd就会执行对应的完整命令了,懒人必备。

4、进程id补全

比如要杀掉一个进程,在 zsh 中可以直接输入 kill 进程名,进程名会直接转换成对应进程id:

5、快速跳转

使用 d 这个命令,可以列出最近访问过的各个目录,然后输入目录前面的对应数字快速跳转:

6、目录名简写自动补全

如果确切的知道我们要进入某一层目录,但是目录名比较长,没关系,Zsh帮你搞定! 比如我们要进入到 ~/workspace/src/dict,我们只需要输入每个目录的首字母就行,然后再TAB键补全,Zsh会帮你搞定剩下的:

7、命令及参数补全

按下 tab 键即可:

常用插件

zsh-syntax-highlighting

命令语法高亮,mm再也不用担心我输入的命令对不对了,还能和其他字符明显区分。

# 下载
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
# 配置文件中加入此插件
vim ~/.zshrc
plugins=( [plugins...] zsh-syntax-highlighting)
# 重启终端或输入以下代码
source ~/.zshrc

zsh-autosuggestions

历史记录建议插件,自动联想已成功执行的命令,按下 ➡️ 自动补全。

# 下载
git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions
# 配置文件中加入此插件、重启终端
# 参考上面即可

PS:

oh-my-zsh 插件的管理是很简单的,有两个插件目录,其中 user 为你的用户名:

  • /Users/user/.oh-my-zsh/plugins: oh-my-zsh 官方插件目录,该目录已经预装了很多实用的插件,只不过没激活而已;
  • /Users/user/.oh-my-zsh/custom/plugins: oh-my-zsh 第三方插件目录;快捷命令:$ZSH_CUSTOM/plugins

需要安装哪个插件,只需要把插件下载到上面任何一个目录即可,然后在 ~/.zshrc 配置文件中的 plugins 变量中添加对应插件的名称即可。

Powerline字体

# clone
git clone https://github.com/powerline/fonts.git --depth=1
# install
cd fonts
./install.sh
# clean-up a bit
cd ..
rm -rf fonts

Spaceship ZSH

提供了更加丰富的 ZSH 展现形式的 Spaceship Prompt 是 ZSH 的另一个拓展,并且它可以与 Oh My Zsh 兼容。项目地址位于:https://github.com/denysdovhan/spaceship-prompt

安装

1、执行两行命令:

git clone https://github.com/denysdovhan/spaceship-prompt.git "$ZSH_CUSTOM/themes/spaceship-prompt"
ln -s "$ZSH_CUSTOM/themes/spaceship-prompt/spaceship.zsh-theme" "$ZSH_CUSTOM/themes/spaceship.zsh-theme"

2、更改 on-my-zsh 主题:

# 打开配置文件
open ~/.zshrc
# 修改为
ZSH_THEME="spaceship"
# 刷新配置即时生效
source ./zshrc

由于 Spaceship Prompt 需要特殊的符号来显示开发环境版本信息,所以需要在终端工具里选择Powerline Fonts字体 Meslo LG 系列中的一个如"Meslo LG M for Powerline”

更新:


参考