0%

zsh 神兵利器之 oh-my-zsh

zsh 之所以被广为推荐,其中 oh-my-zsh 功不可没。它支持大量方便的插件,可以让你的 Shell 玩出花来。

安装 oh-my-zsh,因为安装 oh-my-zsh 过程中会直接覆盖 ~/.zshrc 文件,所以在有必要的情况下需要提前备份该文件中的内容:

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

安装完毕之后,会生成 ~/.oh-my-zsh 目录,看一下该目录大致的结构:

1
2
3
4
5
- plugins   // oh-my-zsh 默认提供的插件存放位置
- themes // oh-my-zsh 默认提供的主题存放位置
- custom // 用户自定义目录
- plugins // 自定义的插件存放位置
- themes // 自定义的主题存放位置

前面说过,oh-my-zsh 会覆盖原有的 ~/.zshrc, 它会将其默认的配置写在里面。其中就包括 主题 和 插件

oh-my-zsh 主题

~/.oh-my-zsh/themes/ 下是默认支持的主题样式,可以找到你想要的主题,并在 ~/.zshrc 中指定:

1
ZSH_THEME="xxx"

如果不知道选取哪种,则建议使用随机主题:

1
ZSH_THEME="random"

会在每次执行 source ~/.zshrc 或者 每次重新打开终端时随机加载一个主题,从而选择自己喜欢的主题。

oh-my-zsh 插件

我们可以在 ~/.zshrc 中指定需要使用的插件列表, 比如贴一下我目前 zsh 的插件列表:

1
2
3
4
5
6
7
plugins = (
git
autojump
sudo
zsh-autosuggestions
zsh-syntax-highlighting
)

其中除了最后两个 zsh-autosuggestionszsh-syntax-highlighting 之外,其他的插件都是 oh-my-zsh 内置的。

关于每个插件的具体用法,其实在对应的插件目录下面都会有相关 README.md 可供参考。

下面分别说介绍一下这些不同的插件,这些插件都需要在 ~/.zshrcplugins 字段中配置,就不再赘述。

git

作用:

  • 如果当前是 git 项目,则会直接显示当前项目所在的 git 分支

  • 可以使用各种 git 命令的缩写:
    例如:

    1
    2
    3
    git ==> g
    git add ==> ga
    git add -all ==> gaa

    具体有哪些 git 相关命令缩写,可以参考 ~/.oh-my-zsh/plugins/git/git.plugin.zsh

autojump

这是 autojump 的官方仓库,autojump 可以非常方便的在各个历史目录中跳转切换。

除了需要在 ~/.zshrc 中将 autojump 的 zsh 插件添加进来之外,还需要手动安装 autojump 命令:

1
brew install autojump

autojump 是基于历史命令记录的,想要快速跳转必须之前访问过该目录。autojump 同时有命令缩写 j,比如:
之前的操作:

1
cd ~/work/HelloWorld

有了之前的历史命令记录之后,下次再想切换到该目录,就可以方便的跳转:

1
j HelloWorld

sudo

sudo 可以很方便地在之前的命令加上 sudo 前缀,只要按两次 esc 键即可。

zsh-autosuggestions

zsh-autosuggestions 会在你输入命令时,给出建议的命令,默认按 即 TAB 键补全。

安装:

1
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

我们还可以修改补全的按键,比如使用 ctrl + space 来补全:

1
bindkey '^ ' autosuggest-accept

zsh-syntax-highlighting

zsh-syntax-highlighting 可以分别高亮 正确 和 错误 的命令,让用户提前知道自己是否有输错命令。

安装:

1
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

参考