参考: https://zhuanlan.zhihu.com/p/58073103
安装
zsh
sudo apt-get install zsh
oh-my-zsh
默认的 Zsh 配置有点麻烦。因此一个叫 robbyrussel 的用户在 GitHub 上制作了一个配置文件 oh-my-zsh,这是目前为止最流行的 Zsh 配置:
如果你不想看官方的安装说明,请看这里:
第一步 → 把 oh-my-zsh 项目 Clone 下来:
git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
第二步 → 复制 .zshrc
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
第三步 → 更改你的默认 Shell
chsh -s /bin/zsh
重启,默认shell已经更换为zsh。
主题配置
现在默认主题是robbyrussell,如果觉得不太好看,可以更改。前往 oh-my-zsh 的 Wiki 就可以看到大多数 oh-my-zsh 的内置主题以及它们的截图。如果看中的其中的一款,可以重复上面的步骤,编辑~/.zshrc,并更改ZSH_THEME=“xxx”。
受欢迎的主题有agnoster、ys等。
这些主题都保存在 “~/.oh-my-zsh/themes” 目录中。
agnoster
需要额外配置:
- 参考 patched fonts from Vim-Powerline 或 patch your own 安装特殊字符支持(应该是powerline,可参考vim-airline( 包含Powerline字体下载))。
- 可以通过在
~/.zshrc
里设置DEFAULT_USER
来隐藏或者更改原本的“user@hostname”的提示栏信息。- 比如通过
export DEFAULT_USER=$USER
隐藏用户和主机名(提示为空)。- 因为只有当DEFAULT_USER变量与USER变量不同时才会填充提示,因此将两者设置为相同会隐藏提示(echo $DEFAULT_USER默认为空)。
- 或者另一个思路:Go to your
~/.oh-my-zsh/themes
folder, open the theme you are using, comment out the line containsprompt_context
or something similar. Or try to remove$USER@%m
from the theme file.
- 比如通过
插件
oh-my-zsh 的自带插件都储存在 “~/.oh-my-zsh/plugins” 目录中,如果你希望安装一个插件,可以在 “~/.zshrc” 的 plugins=(xxx xxx …) 这一行里加入插件名称。
如果你需要安装第三方插件和主题,比如 zsh-syntax-highlighting 插件:将 zsh-syntax-highlighting的repo克隆到.oh-my-zsh/plugins目录后,在.zshrc中设置:
plugins=(git zsh-syntax-highlighting)
或者在 “~/.zshrc” 的某一行(比如末尾)加入 source /path/to/plugin。
优化
zsh终端补全大小写敏感
zsh默认Tab补全大小写不敏感,需要Shift+Tab才能补全大写路径,很不方便。
参考: https://zhuanlan.zhihu.com/p/429131945
在 .zshrc
结尾加上如下内容:
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' '+m:{A-Z}={a-z}'
重新载入 .zshrc
:
$ source ~/.zshrc
禁用git检查
zsh进入git目录会检查git更新状态,产生至少1秒的延迟。
如果只是想在特定git目录不检查,首先进入该目录,再执行
git config --add oh-my-zsh.hide-status 1
如果想要不检查所有git目录,进行全局设置
git config --global oh-my-zsh.hide-status 1
要取消就将上面的命令中1改为0再执行。
缺陷
zsh相比bash环境还是有一些不同:
Ctrl+C后无法在命令行显示^C符号
kill -l输出相比bash环境下更简陋,只是一个以空格分隔的信号名称列表,而不是带有数字编号的形式。