跳到主要内容

oh-my-zsh 小记

· 阅读需 6 分钟

其实一开始让我转 zsh 我是拒绝的,因为OS X默认的 bash 相对来说已经相当强大了,但是受不了 oh-my-zsh 诱人的界面,于是今天就花时间装上体验了一把,再然后就是我来这里安利了😏😏😏

安装

首先需要安装 zsh ,如果不确定有没有,可以通过终端命令:

cat /etc/shells

查看,我的结果如下:

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

没有的就需要安装了。

  • OS X用户:睾贵的自带了 zsh ,跳过...
  • Ubuntu用户:sudo apt-get install zsh
  • Windows用户:~~由于天生太高贵,无法安装,请关闭当前页面...😂😂😂请转至评论区,借助Cygwin可以实现(2016年3月31日更新,据Windows开发者大会前线消息,Windows推出了bash for windows,Windows用户们喜大普奔吧!!!)

传说 zsh 配置极其复杂,起初并没有多少人用,后来有个程序猿在GitHub开源了一个oh-my-zsh项目,然后就... zsh 大法好,果然程序猿改变世界!!!


oh-my-zsh有两种安装方式:

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

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

安装完成后重启终端就OK了。

个性化配置

我之前一直使用的是 bash ,有部分配置保存在相应的配置文件中,我的是在 ~/.bash_profile 中,使用 vim ~/.bash_profile 进入编辑模式,把里面的个人配置拷贝出来粘贴到 ~/.zshrc 的末尾即可。


oh-my-zsh 最直观和 bash 不一样的地方要数它丰富的主题了,也是一开始吸引我使用它的地方。不过在配置主题之前最好先保证系统有丰富的字体,因为部分主题依赖于这些字体,按照说明安装即可,安装完成后在 shell 偏好设置里面选择,我使用的是 Meslo for Powerline 系列。

切换主题只需要编辑 ~/.zshrc 文件,找到下面这段文本:

# Set name of the theme to load.
# Look in ~/.oh-my-zsh/themes/
# Optionally, if you set this to "random", it'll load a random theme each
# time that oh-my-zsh is loaded.
ZSH_THEME="random"

我自己配置的是随机 random ,自带的主题在 ~/.oh-my-zsh/themes 里面,想用哪个就把相应的名字替换进去就可以了,这是一些自带主题的截图⇒我带你去看。有可能你不满足于这些,没关系,还有扩展主题,每个主题都有详细的配置方法,照做就OK了。


oh-my-zsh 另外一个强大的地方是插件,自带插件在 ~/.oh-my-zsh/plugins 目录下,想了解各个插件的功能和使用方法,阅读各个插件目录下的 *.plugin.zsh 就可以了,比如在终端中输入 vim ~/.oh-my-zsh/plugins/git/git.plugin.zsh ,你可以看到:

# Query/use custom command for `git`.
zstyle -s ":vcs_info:git:*:-all-" "command" _omz_git_git_cmd
: ${_omz_git_git_cmd:=git}

#
# Functions
#
...
alias g='git'

alias ga='git add'
alias gaa='git add --all'
alias gapa='git add --patch'
...

贴心好用到哭有木有😭😭😭

除了自带插件外,还有一大票扩展插件,我目前只安装了一个zsh-completions。安装方式很简单,把插件用 git 命令克隆到 ~/.oh-my-zsh/custom/plugins ,然后在配置文件中按插件说明配置保存、重启就可以了。


有些插件在按照说明安装使用后会报类似于如下的错误:_arguments:450: _vim_files: function definition file not found, 我的解决办法是,直接删除 ~/.zcompdump 文件,但是不知道会不会影响其他插件的功能。

使用心得

举个栗子?,之前偶尔需要用到删除文件夹的操作, rm -r [path] ,但是常常会忘记中间的参数是什么,现在我只需要这么做:

# 输入 rm - , 然后按tab
rm -
-R -r -- remove directories and their contents recursively
-f -- ignore nonexistent files, never prompt
-i -- prompt before every removal

对于这种低频的操作来说非常方便,不需要再使用 man 来查询。

另一个我很喜欢的地方就是当处于Git版本控制目录下时,有非常贴心的版本相关信息,包括当前所在分支,本地代码提交情况等( SVN 好像没有这个功能,不知是我姿势不对还是可以通过其他插件得以实现相似功能),同时对 Git 精简了很多命令。

还有, cd 敲太多是不是烦了?在 oh-my-zsh 中进入某个路径不需要带 cd


以上就是使用了一天的成果了,期待有更多更好玩的发现!

最后讲一句,开源大法好!!!开源大法好!!!开源大法好!!!