这篇文章的绝大部分内容出自MacTalk - 终极shell,这里仅用作我在实际操作中的笔记。其中autojump的配置和zsh命令纠错的配置略有修改。
查看已安装的shell
cat /etc/shells
结果如下:
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
将当前用户的默认shell改成zsh
chsh -s /bin/zsh
安装“oh my zsh”
wget --no-check-certificate http://install.ohmyz.sh -O - | sh
安装完成后,重新打开一个终端会话就可以了。
PS:详细信息可以参考 oh-my-zsh的GitHub页面
配置zsh
-
设置命令别名
vi ~/.zshrc
在文件的末尾添加以下内容:
alias zshconfig='vi ~/.zshrc' alias vimconfig='vi ~/.vimrc' alias ll='ls -l' alias vi='vim' alias subl='open -a "Sublime Text"'
-
设置文件类型的默认打开方式
vi ~/.zshrc
在文件的末尾添加以下内容:
alias -s txt='vi' alias -s lua='vi' alias -s cpp='vi' alias -s c='vi' alias -s h='vi' alias -s zip='unzip' alias -s gz='tar -xzvf' alias -s tgz='tar -xzvf' alias -s bz2='tar -xjvf'
以后在zsh中,直接输入以上类型的文件名,就会自动使用默认的方式打开了。
-
启用命令纠错功能
vi ~/.zshrc
在其中找到下面的两行:
# Uncomment the following line to enable command auto-correction. # ENABLE_CORRECTION="true"
改成下面这样的:
# Uncomment the following line to enable command auto-correction. ENABLE_CORRECTION="true"
-
修改默认主题:
vi ~/.oh-my-zsh/themes/robbyrussell.zsh-theme
找到下面一行:
PROMPT='${ret_status}%{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'
搜索其中的
%c
,把它改成%d
,即下面这样:PROMPT='${ret_status}%{$fg_bold[green]%}%p %{$fg[cyan]%}%d %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'
效果呢,就是把zsh提示符中的当前目录改成了绝对路径。
插件
-
git
vi ~/.zshrc
搜索
plugins=
,然后改成下面这样:plugins=(git)
然后就可以使用git命令的缩写了,具体缩写形式可以参考文件:
~/.oh-my-zsh/plugins/git/git.plugin.zsh
-
osx
同上,在
~/.zshrc
中启用osx:plugins=(git osx)
在zsh中输入:
quick-look filename
可以预览文件;man-preview command-name
可以生成命令的pdf版本。 -
autojump
brew install autojump
在
~/.zshrc
中启用autojump:plugins=(git osx autojump)
最后把下面的配置信息加入
~/.zshrc
:[[ -s `brew --prefix`/etc/autojump.sh ]] && . `brew --prefix`/etc/autojump.sh
使用zsh
- 兼容bash
-
命令的历史记录
输入命令后,使用⬆️/⬇️在历史记录中切换。 -
命令纠错
当命令拼写错误时(默认容许一个字母拼写错误),zsh提示是否纠错。 -
自动补全(按一下或两下tab键)
- 命令补全
- 路径补全
- 命令参数补全
- 插件内容补全
-
智能跳转(基于autojump)
-
j 目录名
(支持模糊匹配和自动补全) -
d
(列出当前会话中访问过的目录列表,输入列表前的序号可以直接跳转) -
..
(跳转到父目录) -
...
(跳转到父目录的父目录) - 直接输入目录名即可跳转 (省略了cd命令)
-