入坑前言
其实一开始让我转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
。
以上就是使用了一天的成果了,期待有更多更好玩的发现!
最后讲一句,开源大法好!!!开源大法好!!!开源大法好!!!