zsh, oh-my-zsh 安装配置

zsh及其丰富的插件,帮助我们在敲命令行时事半功倍。

1. Zsh

Zsh,即Z shell。
$cat /etc/shells可以查看所有的shells,如bash,tcsh,zsh等。
如果已经有了zsh,则命令$chsh -s /bin/zsh即可切换到zsh shell。
命令$echo $SHELL查看,则结果为/usr/bin/zsh或者/bin/zsh。关于二者的关系,以下命令可以说明。

1
2
$ls -ls /usr/bin/zsh
... /usr/bin/zsh -> /bin/zsh

zsh 与 .bash_profile .bashrc

已知.bashrc是每当bash “started interactively”时都会运行;.bash_profile仅仅“at the start of a new login shell”时执行。那么,使用zsh时.bashrc和.bash_profile就不会生效。
实际上,zsh相关的文件如下
$ZDOTDIR/.zshenv 类似.bash_profile
$ZDOTDIR/.zprofile 类似.bash_profile
$ZDOTDIR/.zshrc 类似.bashrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout

Installing ZSH

2. oh-my-zsh及插件配置

一般推荐的安装方式为
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
或者
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
给非root用户安装,或者需要指定安装位置,可以手动安装。

手动安装

  1. git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
  2. 如果.zshrc中已经有了相关配置,可以将其备份
  3. cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

安装 zsh-syntax-highlighting

zsh-syntax-highlighting的作用是shell命令高亮。
Mac OS X等系统安装
brew install zsh-syntax-highlighting或其他对应的命令
source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh添加到~/.zshrc的最后。

手动安装则可以直接下载git repo。

  1. git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
  2. 在.zshrc的plugins选项中添加
    plugins=( [plugins…] zsh-syntax-highlighting)
  3. 重启zsh或者 source ~/.zshrc

安装 zsh-autosuggestion及iTerm2下不可用的解决办法

利用手动安装的方式,即

  1. git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
  2. ~/.zshrc中设置plugins=(... zsh-autosuggestions)

发现未能生效,以为Mac下最好使用brew安装的方式

  1. brew install zsh-autosuggestions
  2. ~/.zshrc中添加source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh
    发现还是未能生效;但是,默认的bash可以生效;进一步测试发现iTerm2下按cmd+A命令时也会执行补全。
    最终参考这篇文章
    ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=6'

Install oh-my-zsh
zsh-syntax-highlighting