zsh

入坑前言

其实一开始让我转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可以实现(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


以上就是使用了一天的成果了,期待有更多更好玩的发现!
最后讲一句,开源大法好!!!开源大法好!!!开源大法好!!!

posted @ 2017-03-06 13:48  rexzhao  阅读(419)  评论(0编辑  收藏  举报