参考链接:http://blog.csdn.net/yangcs2009/article/details/45720193
oh-my-zsh的主题:https://github.com/robbyrussell/oh-my-zsh/wiki/themes
oh-my-zsh的插件: https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins-Overview#fs-jumping
基本安装
基于Unix操作系统(Mac, Linux),需要预先安装zsh。
如何检测是安装zsh:
zsh --version;
on-my-zsh 安装
一、自动安装
wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O - | sh
二、手动安装
1. 克隆仓库
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
2. 如果你已存在~/.zshrc文件,则备份现有的~/.zshrc文件
cp ~/.zshrc ~/.zshrc.orig
3. 创建一个新的zsh配置文件
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
4. 改变默认的Shell
chsh -s /bin/zsh
5. 重新启动你的终端(Terminal)
一些预览:
一些遇过的坑
不能把zsh设置为默认shell
如果真的遇到了,那么我们可以手动进入zsh,只需这样:
$ zsh
➜ ~ git:(master) ✗
另外,相关的alias可以复制到~/.zshrc文件里,最后使用source更新一下文件即可:
✗ source ~/.zshrc
配置文件
大部分配置都可以在配置文件中进行设置,这里我大概翻译一下,以及给出自己的一些使用偏好。
# ZSH的环境变量 export ZSH=/Users/dawang/.oh-my-zsh # 主题设置 # 主题列表在 ~/.oh-my-zsh/themes/ # 如果设置为 "random", 每次开启都会是不同的主题 ZSH_THEME="agnoster" # 如果想要大小写敏感,可以取消注释下面的一行 # CASE_SENSITIVE="true" # 如果想要连接符不敏感,可以取消注释下面的一行。_ 和 - 将可以互换 # HYPHEN_INSENSITIVE="true" # 如果不想要自动更新,可以取消注释下面的一行 # DISABLE_AUTO_UPDATE="true" # 自动更新的时间间隔,单位是天,这里设置 30 天更新一次 export UPDATE_ZSH_DAYS=30 # 如果不想要 ls 命令输出带颜色,可以取消注释下面的一行 # DISABLE_LS_COLORS="true" # 是否禁止更改终端标题,不要禁止,不然所有终端tab只显示zsh了,而不随着目录的改变而改变显示 # DISABLE_AUTO_TITLE="true" # 自动纠正命令,不启用,不怎么好用 # ENABLE_CORRECTION="true" # 按tab键补全命令的时候,如果没什么可补全的就会出现三个红点,更人性化显示,这里我们启用 COMPLETION_WAITING_DOTS="true" # Uncomment the following line if you want to disable marking untracked files # under VCS as dirty. This makes repository status check for large repositories # much, much faster. # 不要在意这些细节,不需要改动 # DISABLE_UNTRACKED_FILES_DIRTY="true" # 历史命令日期显示格式 # 有三种方式: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd",我比较习惯最后那种 HIST_STAMPS="yyyy-mm-dd" # Would you like to use another custom folder than $ZSH/custom? # ZSH_CUSTOM=/path/to/new-custom-folder # Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ # Example format: plugins=(rails git textmate ruby lighthouse) # 插件设置,如果添加太多启动速度会比较慢 plugins=(git autojump) [[ -s ~/.autojump/etc/profile.d/autojump.zsh ]] && . ~/.autojump/etc/profile.d/autojump.zsh # 剩下部分比较不常改动 # User configuration export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/TeX/texbin" # export MANPATH="/usr/local/man:$MANPATH" source $ZSH/oh-my-zsh.sh # You may need to manually set your language environment # export LANG=en_US.UTF-8 # Preferred editor for local and remote sessions # if [[ -n $SSH_CONNECTION ]]; then # export EDITOR='vim' # else # export EDITOR='mvim' # fi # Compilation flags # export ARCHFLAGS="-arch x86_64" # ssh # export SSH_KEY_PATH="~/.ssh/dsa_id" # Set personal aliases, overriding those provided by oh-my-zsh libs, # plugins, and themes. Aliases can be placed here, though oh-my-zsh # users are encouraged to define aliases within the ZSH_CUSTOM folder. # For a full list of active aliases, run `alias`. # # Example aliases # alias zshconfig="mate ~/.zshrc" # alias ohmyzsh="mate ~/.oh-my-zsh" |
高级功能
常用快捷键
- 命令历史记录
- 一旦在 shell 敲入正确命令并能执行后,shell 就会存储你所敲入命令的历史记录(存放在
~/.zsh_history
文件中),方便再次运行之前的命令。可以按方向键↑和↓来查看之前执行过的命令 - 可以用
!!
来执行上一条命令 - 使用
ctrl-r
来搜索命令历史记录
- 一旦在 shell 敲入正确命令并能执行后,shell 就会存储你所敲入命令的历史记录(存放在
- 命令和文件补全(按tab键)
- 命令别名
- 可以简化命令输入,在
.zshrc
中添加alias shortcut='this is the origin command'
一行就相当于添加了别名 - 在命令行中输入
alias
可以查看所有的命令别名
- 可以简化命令输入,在
一些比较好用的设置
alias cls='clear' alias ll='ls -l' alias la='ls -a' alias grep="grep --color=auto" alias -s html='vim' # 在命令行直接输入后缀为 html 的文件名,会在 Vim 中打开 alias -s rb='vim' # 在命令行直接输入 ruby 文件,会在 Vim 中打开 alias -s py='vim' # 在命令行直接输入 python 文件,会用 vim 中打开,以下类似 alias -s js='vim' alias -s c='vim' alias -s java='vim' alias -s txt='vim' alias -s gz='tar -xzvf' # 在命令行直接输入后缀为 gz 的文件名,会自动解压打开 alias -s tgz='tar -xzvf' alias -s zip='unzip' alias -s bz2='tar -xjvf' |
插件:
自带大部分 git 命令的缩写,命令内容可以参考 ~/.oh-my-zsh/plugins/git/git.plugin.zsh
Oh My Zsh 提供了一套系统别名(alias),来达到相同的功能。比如gst
作为git status
的别名。而且 Git 插件是 Oh My Zsh 默认启用的,相当于你使用了 Oh My Zsh,你就拥有了一套高效率的别名,而且还是全球通用的。是不是棒棒哒?下面是一些我常用的别名:
Alias | Command |
---|---|
gapa | git add --patch |
gc! | git commit -v --amend |
gcl | git clone --recursive |
gclean | git reset --hard && git clean -dfx |
gcm | git checkout master |
gcmsg | git commit -m |
gco | git checkout |
gd | git diff |
gdca | git diff --cached |
gp | git push |
grbc | git rebase --continue |
gst | git status |
gup | git pull --rebase |
完整列表请参考:https://github.com/robbyrussell/oh-my-zsh/wiki/Plugin:git
osx
- tab - 在一个新标签打开当前目录
- cdf - cd到当前Finder目录
- quick-look - 快速浏览特殊的文件
- man-preview - 在Preview应用打开特定的man page
- trash - 将特定的文件移到垃圾桶
使用技巧
- 连按两次Tab会列出所有的补全列表并直接开始选择,补全项可以使用 ctrl+n/p/f/b上下左右切换
- 命令选项补全。在zsh中只需要键入
tar -<tab>
就会列出所有的选项和帮助说明 - 命令参数补全。键入
kill <tab>
就会列出所有的进程名和对应的进程号 - 更智能的历史命令。在用或者方向上键查找历史命令时,zsh支持限制查找。比如,输入
ls
,然后再按方向上键,则只会查找用过的ls命令。而此时使用则会仍然按之前的方式查找,忽略ls
- 多个终端会话共享历史记录
- 智能跳转,安装了 autojump 之后,zsh 会自动记录你访问过的目录,通过
j 目录名
可以直接进行目录跳转,而且目录名支持模糊匹配和自动补全,例如你访问过 hadoop-1.0.0 目录,输入j hado
即可正确跳转。j --stat
可以看你的历史路径库。 - 目录浏览和跳转:输入 d,即可列出你在这个会话里访问的目录列表,输入列表前的序号,即可直接跳转。
- 在当前目录下输入
..
或...
,或直接输入当前目录名都可以跳转,你甚至不再需要输入 cd 命令了。在你知道路径的情况下,比如/usr/local/bin
你可以输入cd /u/l/b
然后按进行补全快速输入 - 通配符搜索:
ls -l **/*.sh
,可以递归显示当前目录下的 shell 文件,文件少时可以代替 find。使用**/
来递归搜索 - 扩展环境变量,输入环境变量然后按 就可以转换成表达的值
- 在
.zshrc
中添加setopt HIST_IGNORE_DUPS
可以消除重复记录,也可以利用sort -t ";" -k 2 -u ~/.zsh_history | sort -o ~/.zsh_history
手动清除