作为代码狗,每天要在命令行上浪费N多绳命。当你为Mac上难用的bash咬牙切齿的时候,殊不知OSX已自带了另一种好用得不得了的shell:zsh。但是由于配置过于复杂,如果想爽快地使用的话,有必要安装oh-my-shell,真的十分好用。本文就将介绍oh-my-zsh的安装使用以及一些技巧。
安装zsh
通过指令查看你的系统支持哪几种shell。运行cat /etc/shells
,Mac系统显示如下:1
2
3
4
5
6/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
如上所示,如果是Mac系统,无需再重新安装zsh。
如果是Redhat Linux,执行sudo yum install zsh
。
如果是Ubuntu Linux,执行sudo apt-get install zsh
。
安装完成后,将当前用户使用的shell切换成zsh: chsh -s /bin/zsh
,请不要担心bash的命令无法使用,因为zsh是完全兼容bash的。
如果你在 .bashrc 或者 .bash_profile 中设置了PATH或者自定义了一些alias等,需要将这些配置配置到.zshrc中,并执行一下
source ~/.zshrc
,这样原先的使用都不受影响。
安装oh-my-zsh
自动安装:1
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
手动安装:1
2git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
配置
zsh的配置主要集中在用户目录下的.zshrc,可以在该文件中对环境变量以及别名进行设置。我的常用配置如下:1
2
3
4
5
6
7alias subl=\''/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl'\'
alias -s markdown=subl
alias -s md=subl#在命令行直接输入后缀为md的文件名,会在sublime text中打开
alias -s log=vim
alias -s txt=vim
alias -s gz='tar -xzvf'
alias -s tgz='tar -xzvf'
zsh 既可以设置通用别名,还能针对文件类型设置对应的打开程序,比如:
alias -s md=subl,意思就是你在命令行输入 hello.md,zsh会为你自动打开 sublime text 并读取 hello.md; alias -s gz=’tar -xzvf’,表示自动解压后缀为 gz 的压缩包。
zsh拥有很多强大的功能,可以去.zshrc中看那些配置的具体说明,很多默认是被注释掉的,去掉注释即可打开相关特性。现在通过几行配置打开zsh强大的补全与纠错功能。1
2
3
4
5
6
7
8
9
10# completion
autoload -U compinit
compinit
# correction
setopt correctall
# prompt
autoload -U promptinit
promptinit
补全功能使得你只需要输入开头或者其中的几个字母,通过tab键就可以自动补全正确的目录活着文件名。纠错功能使得你输入gti
时会提示是否换成git
。
注意:vim的补全时可能会报错
_arguments:450: _vim_files: function definition file not found
,此时只需要删掉 ~/.zcompdump,关闭shell窗口,重新进入即可。
另外,可以在.zshrc中通过设置ZSH_THEME=”robbyrussell”
来改变主题,~/.oh-my-zsh/themes/目录下有很多主题。我使用的是默认的主题,只不过做了一点小改动:1
2PROMPT='%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p%{$fg[cyan]%}%d %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%}% %{$reset_color%}$'
#PROMPT='%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'
将c改成了d,表示绝对路径,在末尾加上了一个$。
插件
oh-my-zsh自带了很多好用的插件,位于~/.oh-my-zsh/plugins/目录下,开启时只需在.zshrc中找到plugins=(git)
,将想加的插件的名字添加进去即可。比如plugins=(git z)
就开启了git和z两个插件。下面列出几个常用的自带插件。
z
这是个自带的但是没有开启的插件,类似于autojump。比如经常进入~/Documents目录,按下 z doc 一般它就可以跳进去了(当然首先你得用一段时间让它积累一下数据才能用)。
d
按一下 d 再回车你会看到最近的历史记录,可以通过数字比如 1, 2 之类的返回到某个历史记录中了。
zsh_stats
zsh_stats 可以看到你的使用频率前 20 的命令。
Git Aliases
git 插件是默认开启的,它能够自动补全以及显示所在 branch。下面列出常用的git命令别名。
Alias | Command |
---|---|
g | git |
gst | git status |
ga | git add |
gp | git push |
gl | git pull |
gc | git commit -v |
更多自带的插件用法请参见Plugins Overview,
小技巧
- 在当前目录下输入 .. 或 … ,或直接输入当前目录名都可以跳转,你甚至不再需要输入 cd 命令。
- 通配符搜索:ls -l */.sh,可以递归显示当前目录下的 shell 文件,文件少时可以代替 find。